我在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';
}
}
答案 0 :(得分:1)
更新到以下
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”。当数组中的最后一个值发生时,只有匹配的条件将具有某个值,并且由于if..else条件,所有值都将为0。因此,将初始值移到循环外部并使用if .. else,如果在for循环中检查匹配。
答案 1 :(得分:0)
您的变量india
,uk
,Canada
是唯一的,并且会覆盖for-loop
的迭代。所以最后,它们只匹配最后一个数据(i=fLen-1
)。
您必须创建一个结果数组,例如india = []
,然后在for循环中填充india[i]
。