Javascript中如何对对象数组的不同字段分别进行求和计算?
对象数组按字段分别求和解决方案
原代码问题分析
你只声明了单个sum变量存储累加值,所有字段的计算结果都会叠加到同一个变量上,因此最终得到的是所有字段所有值的总和(3+6+2+4=15),无法拆分单个字段的求和结果。
实现代码
const myArrayObject = [{value1: 3, value2:6}, {value1: 2, value2: 4}]; // 初始化求和结果对象,所有字段初始值为0 const sumResult = {}; myArrayObject.forEach(item => { // 遍历当前对象的所有自有属性 Object.keys(item).forEach(key => { // 若字段首次出现则先初始化值为0 sumResult[key] = (sumResult[key] || 0) + item[key]; }); }); console.log(sumResult); // 输出:{ value1: 5, value2: 10 }
代码说明
- 用
sumResult对象存储所有字段的求和结果,键和原对象的字段名一一对应,值为对应字段的求和结果 - 自动适配数组对象的任意未知字段,即使不同对象包含的字段不完全一致也能正常计算
- 最终可以通过
sumResult.你的字段名直接获取对应字段的求和值
内容的提问来源于stack exchange,提问作者ASO
相关产品推荐
相关产品推荐

