Javascript 如何对含动态键的对象数组的所有属性值求和
动态键对象数组属性值求和实现方案
最简实现代码
兼容ES2017+版本(通用性最强)
const total = arr.reduce((sum, cur) => sum + Object.values(cur).reduce((valSum, val) => valSum + val, 0), 0);
ES2019+ 更短写法
如果运行环境支持flatMap语法,可使用更简洁的写法:
const total = arr.flatMap(Object.values).reduce((a, b) => a + b, 0);
实现逻辑
两种写法的核心逻辑一致:
- 取出数组中每个对象的所有属性值,不受动态键名限制
- 将所有属性值累加得到最终总和
代入你给出的示例数组计算,最终输出结果为9,完全符合预期。
与参考代码的差异
你找到的参考代码实现的是按不同键名分组统计每个键的总和,输出为各键总和组成的对象,不符合总合计需求。本实现去掉了按键分组的逻辑,直接累加所有属性值即可。
内容的提问来源于stack exchange,提问作者juanmac
相关产品推荐
相关产品推荐

