迭代一组对象并将值一起添加

时间:2016-08-02 17:53:44

标签: javascript arrays angularjs loops object

这似乎很基本,但我无法弄明白。我有以下数组

var myArray = [{a:3, b:4, c:5}, {a:-1, b:3, c:5}, {a:0, b:-3, c:1}];

我想循环遍历这个数组并将所有的a,b,s,c加在一起。我想在循环中完成它,因为我不知道数组中有多少个对象。

如:

var A = myArray[0].a + myArray[1].a + myArray[2].a;

3 个答案:

答案 0 :(得分:3)

您可以使用reduce()并在单独的变量中为每个键返回结果。

var myArray = [{a:3, b:4, c:5}, {a:-1, b:3, c:5}, {a:0, b:-3, c:1}];
var A = myArray.reduce(function(r, e) {
  return r + e.a;
}, 0)

console.log(A)

或者您可以使用reduce()Object.keys()在一个变量中为每个对象的属性返回总和。

var myArray = [{a:3, b:4, c:5}, {a:-1, b:3, c:5}, {a:0, b:-3, c:1}];
var result = myArray.reduce(function(r, e) {
  Object.keys(e).forEach(function(k) {
    r[k] = (r[k] || 0) + e[k];
  });
  return r;
})

console.log(result);

答案 1 :(得分:1)

也许这会有所帮助。

var sumA = 0, sumB =0, sumC =0;
myArray.forEach(function(v){
  if (v.hasOwnProperty("a") {sumA += v["a"];}
  if (v.hasOwnProperty("b") {sumB += v["b"];}
  if (v.hasOwnProperty("c") {sumC += v["c"];}
});

答案 2 :(得分:0)

forEach()可以工作:

var myArray = [{a:3, b:4, c:5}, {a:-1, b:3, c:5}, {a:0, b:-3, c:1}];
var A = 0;
myArray.forEach(x => {A += x.a});
console.log(A); // 2