如何从javascript中的对象数组中获取键值的总和?

时间:2016-06-12 03:26:50

标签: javascript

我需要总结一个键的所有值"数字"来自数组中的几个对象。这样做的正确方法是什么?这就是我尝试过的。

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
  }
}

2 个答案:

答案 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()

DEMO

修改

使用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已添加为参数?这是默认参数,在这种情况下是必需的。