क्यों बदल रहे हैं, मैं यह पता लगाने की कोशिश कर रहा हूं कि मेरे चार्ट में मान सही तरीके से क्यों नहीं आ रहे हैं। जब मैं learningLanguages[j].count++
के मानों को लॉग करता हूं क्योंकि यह लूपिंग है तो वे सटीक हैं। हालांकि, जब मैं चार्ट $.map(nativeLanguages, function(n) {...})
में नक्शा समारोह में n
प्रवेश करते है, मायने रखता है आपकी समस्या के सभी गलत (और उचित रूप में मनमाने ढंग से)यह पता नहीं लगा सकता कि मेरी ऑब्जेक्ट्स में मान
var getLanguages = $.get('/languages.json', function(languages){
// top level language arrays
learningLanguages = []
nativeLanguages = []
// object constructor that correctly formats the language objects
function Language(lang) {
this.language = lang;
this.count = 0;
}
// Loop through the languages, create an object for each, push to top level language arrays
for(i = 0; i < languages.length; i++) {
currentLanguage = new Language(languages[i].language)
learningLanguages.push(currentLanguage)
nativeLanguages.push(currentLanguage)
}
});
// once the languages call is complete find signed-in user's info
getLanguages.done(function() {
$.get('/users.json', function(response) {
// console.log(response)
// adds the total number of users to the DOM
var numberOfUsers = response.length
$('#userCount').append('<h1>Total Users: ' + numberOfUsers + '</h1>')
// find the number of approved users
// var numberApproved = 0
// for (i = 0; i < response.length; i++) {
// if (response[i].approved === true) {
// numberApproved++
// }
// }
// Add the number of approved users to the DOM
// $('#userCount').append('<h1>Total Approved Users: ' + numberApproved + '</h1>')
// search for the language in the array and increase the count for that language
for (i = 0; i < response.length; i++) {
var userLearningLanguage = response[i].learning_language
for (j = 0; j < learningLanguages.length; j++) {
if (learningLanguages[j].language === userLearningLanguage) {
learningLanguages[j].count++
}
}
}
// search for the language in the array and increase the count for that language
for (i = 0; i < response.length; i++) {
var userNativeLanguage = response[i].native_language
for (j = 0; j < nativeLanguages.length; j++) {
if (nativeLanguages[j].language === userNativeLanguage) {
nativeLanguages[j].count++
}
}
}
var ctx = $("#languageComparisonChart");
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels:
$.map(learningLanguages, function(n) {
return n.language
}),
datasets: [{
label: '# of Learners',
data: $.map(learningLanguages, function(n) {
return n.count
}),
backgroundColor: 'rgba(255, 99, 132, 0.2)',
borderColor: 'rgba(255,99,132,1)',
borderWidth: 1
},
{
label: '# of Native Speakers',
data: $.map(nativeLanguages, function(n) {
console.log(n)
return n.count
}),
backgroundColor: 'rgba(54, 162, 235, 0.2)',
borderColor: 'rgba(54, 162, 235, 1)',
borderWidth: 1
}]
},
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}]
},
responsive: false,
maintainAspectRatio: true
}
});
})
});
}
क्या आपने 'for' loop के बाद सही लॉग इन करने का प्रयास किया है? या बस इसके अंदर? –
क्या यह सब कोड है ?, क्योंकि यहां बहुत सारी त्रुटियां हैं। जैसे। उन्हें परिभाषित किए बिना आपके उपयोग चर। आप किसी भी संकेत का उपयोग नहीं कर रहे हैं? .. इंडेंटिंग भी गलत है, और आपके पास अतिरिक्त} – Keith
है और आपको अर्ध-कॉलन का उपयोग लाइनों को समाप्त करने के लिए करना चाहिए - देखें [यहां जवाब] (http://stackoverflow.com/questions/444080/ डू-यू-अनुशंसा-उपयोग-अर्धविराम-बाद-हर-कथन-इन-जावास्क्रिप्ट) –