我需要总结一个键的所有值"数字"来自数组中的几个对象。这样做的正确方法是什么?这就是我尝试过的。
var numarray = [{"number":"10"},{"number":"2"},{"number":"5"},
{"number":"3"},{"number":"21"},{"number":"43"},{"number":"30"}];
function Sum() {
var sum;
for (number in numarray[i]){
alert(sum); //sum would be the result I need to get
}
}
答案 0 :(得分:3)
使用forEach循环遍历每个json对象。
使用parseInt将值转换为整数
var numarray = [
{"number":"10"},
{"number":"2"},
{"number":"5"},
{"number":"3"},
{"number":"21"},
{"number":"43"},
{"number":"30"}];
function Sum(){
var sum=0;
numarray.forEach(function(item){
sum += parseInt(item.number)
})
document.write('<pre>'+sum+'</pre>')
}
Sum()
修改强>
使用parseInt时,最好指定基数
parseInt(item.number,10)
使用10基数意味着用基数10解析数字,从而将数字转换为整数。如果parseInt
检测到前导零,它将解析八进制数中的数字
使用数字
Number(item.number)
它不会检测到任何八进制
答案 1 :(得分:2)
您可以使用reduce
:
以下是通常在数组中找到元素总和的方法:
var sum = arr.reduce(function(a,b) {
return a + b;
});
由于您有一个对象数组,因此您需要将其更改为:
var sum = arr.reduce(function(a,b) {
return parseFloat(a) + parseFloat(b.number);
}, 0);
请注意我添加的0
已添加为参数?这是默认参数,在这种情况下是必需的。