首页 > 解决方案 > 在 JavaScript 中获取数组中对象的特定字段的总和

问题描述

我知道我可以使用 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 来获取数组中所有对象的“余额”字段的总和?

标签: javascriptarraysreduce

解决方案


尝试以下操作:

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


推荐阅读