我知道我可以使用reduce对一个数组的数量求和,如下所示:
let numArray = [1, 2, 3, 4].reduce((a, b) => a + b, 0);
console.log(numArray);
但是,如果我有一个对象数组,其中一个字段的值是一个数字,我将如何获取数组中对象的该字段的总和?
例如说这种数据结构:
[
{
name: "John Smith",
balance: 42
},
{
name: "Jane Doe",
balance: 24
}
]
如何使用reduce来获取数组中所有对象的“ balance”字段的总和?
var arr = [{name: "John Smith",balance: 42},{name: "Jane Doe",balance: 24}];
var result = arr.reduce((a,curr) => a + curr.balance, 0);
console.log(result);
创建通用函数,例如:
var arr = [{name: "John Smith",balance: 42, average : 20},{name: "Jane Doe",balance: 24, average : 30}];
function getSumFromObjects(arr,prop) {
return arr.reduce((a,curr) => a + curr[prop], 0);
}
//get sum of prop balance
console.log(getSumFromObjects(arr,"balance"));
//get sum of prop average
console.log(getSumFromObjects(arr,"average"));