[英]Logic in for loop using JavaScript
嘗試使用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循環並繼續加。
提前致謝。
您必須先逐項解析項目,然后再將其添加在一起。
用你的例子
您的代碼
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足夠聰明,知道+
運算符因此是數學運算符,而不是附加運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.