使用JavaScript的for循环逻辑

时间:2014-04-09 02:12:49

标签: javascript math for-loop

尝试使用JavaScript在for循环中执行某些计算时遇到了一些问题:

for (var j = 0; j < count; j++) {
    var attributes;
    if (latlng !== 'Null') {
        attributes = results[j].feature.attributes;
    }                               
    var totalYC = parseInt(attributes["AGE_0_2"] + attributes["AGE_3_4"] + attributes["AGE_5_6"]);      
    var r = {
        pa: attributes["Planning Area Name"],
        sitearea: parseFloat(attributes["SHAPE_Area"] * 0.0001),
        total_pop: parseInt(attributes["TOTAL_POPULATION"]),
        scpr: parseInt(attributes["TOTAL_SCPR"]),
        yc: parseInt(totalYC),
        age_0_2: parseInt(attributes["AGE_0_2"]),
        age_3_4: parseInt(attributes["AGE_3_4"]),
        age_5_6: parseInt(attributes["AGE_5_6"]),        
    };

    r_array.push(r);
}

我希望我的totalYC总结attributes["AGE_0_2"] + attributes["AGE_3_4"] + attributes["AGE_5_6"]仅为一次。假设attributes["AGE_0_2"]为1,attributes["AGE_3_4"]为2且attributes["AGE_5_6"]为3. totalYC应为6,但不会循环到整个for循环并保持加号。

提前致谢。

1 个答案:

答案 0 :(得分:2)

在将这些项目添加到一起之前,您必须单独解析这些项​​目。

使用

的例子
  • attributes [“AGE_0_2”]为1
  • attributes [“AGE_3_4”]为2
  • attributes [“AGE_5_6”]为3

你的代码

var totalYC = parseInt(attributes["AGE_0_2"] + attributes["AGE_3_4"] + attributes["AGE_5_6"]);

可能正在返回123

如果您更改为

var totalYC = parseInt(attributes["AGE_0_2"]) + parseInt(attributes["AGE_3_4"]) + parseInt(attributes["AGE_5_6"]);

您现在应该获得6

修改

因为JavaScript没有类型变量,所以它假定您将字符串附加在一起。

因此,当您输入attributes["AGE_0_2"] + attributes["AGE_3_4"] + attributes["AGE_5_6"]时,就像是在说"1" + "2" + "3"。 JavaScript会尝试将这些值附加在一起,返回"123"

使用ParseInt方法告诉JavaScript尝试先将这些变量解析为数字。 JavaScript很聪明,因此知道+运算符是数学运算符而不是追加符。