如何求和对象';Javascript中数组中的属性

如何求和对象';Javascript中数组中的属性,javascript,arrays,Javascript,Arrays,我有一个对象数组,我试图对数组中的所有nums求和。该数组如下所示: var arr = [{"year": 2011, "num": 0}, {"year": 2012, "num": 2}, {"year": 2013, "num": 5}]; 所以总数应该是7 在Javascript中如何计算总数 我试过: var sum = arr.reduce(function(a, b) { return a + b; }); 但这也带来了: "[object Object][objec

我有一个对象数组,我试图对数组中的所有
num
s求和。该数组如下所示:

var arr = [{"year": 2011, "num": 0}, {"year": 2012, "num": 2}, {"year": 2013, "num": 5}];
所以总数应该是7

在Javascript中如何计算总数

我试过:

var sum = arr.reduce(function(a, b) {
    return a + b;
});
但这也带来了:

"[object Object][object Object][object Object]"
参考资料:

var arr=[{“年”:2011,“数”:0},{“年”:2012,“数”:2},{“年”:2013,“数”:5}];
var总和=0;
对于(变量i=0;i
您只需在数组上循环并增加一个变量:

var arr = [{"year": 2011, "num": 0}, {"year": 2012, "num": 2}, {"year": 2013, "num": 5}];
var sum = 0;
for(var obj in arr) {
    sum += arr[obj].num;
}
// sum now contains the value 7
.

这应该可以

function getSum(theArray){
    var sum = 0;
    for(var i = 0; i<theArray.length; i++){
        var sum += theArray[i].num
    }

    return sum;
}
函数getSum(数组){ var总和=0; 对于(var i=0;i,您可以使用将其转换为一个数字数组,然后对其求和:

var array = [{"year": 2011, "num": 0}, {"year": 2012, "num": 2}, {"year": 2013, "num": 5}];
var sum = array.map(function (a) {
    return a.num;
}).reduce(function (a, b) {
    return a + b;
});

听起来像是要将值数组缩减为单个值。请使用:

reduce
遍历数组的每个元素,并使用传递给它的函数累加一个值。最后一个参数是
prev
的初始值

这是自2011年以来才出现的,因此如果您需要支持旧浏览器,您可能希望尝试以下方法:

如果存在这种情况,这将回到本机实现

或者,如果您喜欢自己滚动,可以使用循环:

for (var i = 0, sum = 0; i < a.length; ++i) {
    sum += a[i].num;
}
for(变量i=0,总和=0;i
请在寻求帮助时显示您的努力。您尝试了什么?您遇到了什么问题?有错误吗?感谢您的反馈Jonathan。我编辑了我的问题并提供了更多详细信息。该编辑使每个人的答案无效。也许添加a会有用。好的一点。我会将编辑移到一个新问题。否决票是什么?Th这是一个正确的(经过测试的)答案。
var array = [{"year": 2011, "num": 0}, {"year": 2012, "num": 2}, {"year": 2013, "num": 5}];
var sum = array.map(function (a) {
    return a.num;
}).reduce(function (a, b) {
    return a + b;
});
var a = [{"year": 2011, "num": 0}, {"year": 2012, "num": 2}, {"year": 2013, "num": 5}];
a.reduce(function(prev, curr) { return prev + curr.num }, 0);
7
_.reduce(a, function(prev, curr) { return prev + curr.num }, 0);
for (var i = 0, sum = 0; i < a.length; ++i) {
    sum += a[i].num;
}