繁体   English   中英

如何用reduce总结对象数组的属性

[英]How to sum up properties of an array of objects with reduce

说我有以下数组:

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 ,该初始值将在reduce()的初始迭代中分配给第一个参数a

请尝试以下操作:

 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); 

您非常接近:

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

您可以这样做:

 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作为结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM