尝试使用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循环并保持加号。
提前致谢。
答案 0 :(得分:2)
在将这些项目添加到一起之前,您必须单独解析这些项目。
使用
的例子你的代码
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很聪明,因此知道+
运算符是数学运算符而不是追加符。