JavaScript如何合并数组中itemId相同元素并累加对应数量、金额字段
原有代码问题
- 遗漏了需要累加的
Amount字段的取值和累加逻辑 - 初始化分组对象时错误将
itemName初始值设置为0,逻辑不严谨
正确实现代码
let result = Object.values(this.orderDetail.reduce((c, {itemId, itemRate, itemQuantity, itemName, Amount}) => { // 首次遇到对应itemId时初始化 if (!c[itemId]) { c[itemId] = { itemId, itemName, itemRate: 0, itemQuantity: 0, Amount: 0 }; } // 累加数值字段 c[itemId].itemRate += itemRate; c[itemId].itemQuantity += itemQuantity; c[itemId].Amount += Amount; return c; }, {}));
运行效果
针对你提供的测试数组,运行后会合并两个重复itemId的条目:
- itemId为
C10的条目合并后:itemQuantity为2、itemRate为100、Amount为100,itemName保留为Dry fruit - itemId为
C3的条目合并后:itemQuantity为2、itemRate为80、Amount为80,itemName保留为Butter scotch
其余itemId唯一的条目不做修改,数值保持原样。
内容的提问来源于stack exchange,提问作者chethan
相关产品推荐
相关产品推荐

