Я использовал операторы if-else в цикле for, но я всегда получаю ответ как Количество стран в значении Канады, другие страны (Индия, Великобритания) показывают значение 0. В чем проблема и почему я не получаю подсчеты для других стран?
fLen = jArray.length;
for (i = 0; i < fLen; i++) {
if (jArray[i]['territory']=='India') {
var india = jArray[i]['country_count'];
}
else {
var india = '0';
}
if (jArray[i]['territory']=='United Kingdom') {
var uk = jArray[i]['country_count'];
}
else {
var uk = '0';
}
if (jArray[i]['territory']=='Canada') {
var Canada = jArray[i]['country_count'];
}
else {
var Canada = '0';
}
}
Разве интерпретатор не помещает объявления var в начало текущей области видимости из-за подъем?
Большой привет тем, кто смог разобраться в вопросе;)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Обновить до следующего
var india = '0', uk = '0', canada = '0'; // put your variables outside for loop
for (i = 0; i < fLen; i++) {
if (jArray[i]['territory']=='India') { // only set value in loop
india = jArray[i]['country_count'];
} else if (jArray[i]['territory']=='United Kingdom') {
uk = jArray[i]['country_count'];
} else if (jArray[i]['territory']=='Canada') {
canada = jArray[i]['country_count'];
}
}
Рассуждение - всякий раз, когда ваш цикл запускается, он устанавливает значение для совпадающего условия и устанавливает для всех остальных значение «0». Когда это происходит для последнего значения в массиве, только соответствующее условие будет иметь некоторое значение, а все остальные будут равны 0 из-за условия if..else. Следовательно, переместите начальные значения за пределы цикла и используйте if .. else if в цикле for для проверки совпадения.
Ваши переменные india, uk, Canada уникальны и имеют приоритет над итерациями for-loop. Таким образом, в конце они будут соответствовать только последним данным (i=fLen-1).
Вам нужно создать массив результатов, например india = [], а затем заполнить india[i] в цикле for.
Объявите свои
varвне блоковif...else