这似乎很基本,但我无法弄明白。我有以下数组
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;
答案 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