JavaScript如何实现对象相似键取最大值后累加求和
JavaScript 按相似键分组取最大值求和实现
实现思路
- 分组规则:以键名中
|pm作为配对后缀标识,去除该后缀后字符串相同的键属于同一配对组 - 遍历目标对象的所有键值对,按上述前缀规则分组存储对应值
- 遍历所有分组取每组最大值,累加所有最大值得到最终总和
完整实现代码
function calcSum(scoreObj) { const groupMap = {}; // 按键前缀分组 Object.entries(scoreObj).forEach(([key, value]) => { const prefix = key.split('|pm')[0]; if (!groupMap[prefix]) { groupMap[prefix] = []; } groupMap[prefix].push(value); }); // 分组取最大值累加 let total = 0; Object.values(groupMap).forEach(values => { total += Math.max(...values); }); return total; } // 测试示例 const score = { "work_1": 5, "work_1|pm": 10, "work_2": 8, "work_2|pm": 7, "work_3": 10 }; console.log(calcSum(score)); // 输出 28
结果说明
对示例对象执行上述代码,得到的总和为28,完全符合预期。
内容的提问来源于stack exchange,提问作者Carlos
相关产品推荐
相关产品推荐

