JavaScript 如何对嵌套对象数组的属性值求和并合并为单个对象
多层嵌套对象数组属性求和实现方案
你可以直接遍历每个对象的全部分类键实现动态求和,无需提前声明所有分类,实现代码如下:
const result = arr.reduce((acc, curr) => { // 遍历当前项的所有一级分类 Object.keys(curr).forEach(category => { // 累加器无对应分类时先初始化 if (!acc[category]) acc[category] = {} // 遍历分类下的所有数值属性累加 Object.keys(curr[category]).forEach(attr => { acc[category][attr] = (acc[category][attr] || 0) + curr[category][attr] }) }) return acc }, {}) console.log(result)
实现说明
- 基于数组
reduce方法做累加计算,初始值设为空对象即可,适配后续新增分类的场景 - 第一层遍历获取所有一级分类名称(preliminary、substructure等),自动适配分类增删
- 第二层遍历获取每个分类下的数值属性,自动累加对应属性值,无初始值时默认取0计算
用你提供的示例数组运行后,最终每个分类的contract_value求和结果为1100,planned_value和balance_value求和结果为550,符合预期。
内容的提问来源于stack exchange,提问作者vijayaganth
相关产品推荐
相关产品推荐

