【问题标题】:JavaScript For loop in If Else statement responseIf Else 语句响应中的 JavaScript For 循环
【发布时间】:2018-04-27 06:37:49
【问题描述】:

我在 for 循环中使用了 if-else 语句,但我总是收到 Country count in Canada value 的响应,其他国家(印度、英国)显示值 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';
    }
}

【问题讨论】:

  • if...else 块之外声明您的vars
  • 解释器不会因为提升而将var声明放在当前作用域的开头吗?
  • 向那些能够理解问题的人致敬;)

标签: javascript php arrays ajax


【解决方案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”。当它发生在数组中的最后一个值时,只有匹配的条件才会有一些值,其余的都将是 0,因为 if..else 条件。因此,将初始值移出循环并在 for 循环中使用 if.. else if 来检查匹配。

【讨论】:

    【解决方案2】:

    您的变量indiaukCanada 是唯一的,并且在for-loop 的迭代中被覆盖。所以最后,它们只会匹配最后一个数据(i=fLen-1)。

    你必须创建一个结果数组,例如india = [],然后在你的for循环中填充india[i]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多