说我有以下数组:
var BUILDINGS = [
{ production: {"numberProd": 6}},
{ production: {"numberProd": 11}},
{ production: {"numberProd": 14}},
];
我正在尝试使用reduce()
来累计这些作品的总和。我试过以下内容:
BUILDINGS.reduce(function(a,b) {return a.production.numberProd + b.production.numberProd});
但是当我运行代码时,我得到了值NaN
。
我想知道如何正确设置reduce()
声明。
谢谢!
答案 0 :(得分:5)
您必须传递0
的初始值,该值将在a
的初始迭代中分配给第一个参数reduce()
。
尝试以下方法:
var BUILDINGS = [
{ production: {"numberProd": 6}},
{ production: {"numberProd": 11}},
{ production: {"numberProd": 14}},
];
var prod = BUILDINGS.reduce(function(a,b) {
return a + b.production.numberProd;
}, 0);
console.log('Total:', prod);

答案 1 :(得分:1)
你非常接近:
BUILDINGS.reduce(function(a,b) {return a + b.production.numberProd}, 0);
BUILDINGS.reduce((currentValue, nextBuilding) => {
return currentValue + nextBuilding.production.numberProd
}, 0) // 0 is the first value
答案 2 :(得分:0)
你可以这样做:
var BUILDINGS = [
{ production: {"numberProd": 6}},
{ production: {"numberProd": 11}},
{ production: {"numberProd": 14}},
];
console.log(BUILDINGS.reduce((sum, item) => {
sum += item.production.numberProd;
return sum;
}, 0));

如果您未将初始值作为0
传递,则会得到NaN
作为结果。