Javascript 在数组中合并重复对象
我有一个数组,我需要将重复值与金额之和合并。 什么是有效的算法Javascript 在数组中合并重复对象,javascript,Javascript,我有一个数组,我需要将重复值与金额之和合并。 什么是有效的算法 var arr = [{ item: { id: 1, name: "Abc" }, amount: 1 }, { item: { id: 1, name: "Abc" }, amount: 2 }, { item: { id: 2, name: "Abc" }, a
var arr = [{
item: {
id: 1,
name: "Abc"
},
amount: 1
}, {
item: {
id: 1,
name: "Abc"
},
amount: 2
}, {
item: {
id: 2,
name: "Abc"
},
amount: 2
},{
item: {
id: 1,
name: "Abc"
},
amount: 2
}]
我需要一个解决方案
[{
item: {
id: 1,
name: "Abc"
},
amount: 5
}, {
item: {
id: 2,
name: "Abc"
},
] amount: 2
}]
只需使用
Object.values()
和Array.reudce()
合并对象,然后获取值:
var arr=[{item:{id:1,名称:“Abc”},金额:1},{item:{id:1,名称:“Abc”},金额:2},{item:{id:2,名称:“Abc”},金额:2},{item:{id:1,名称:“Abc”},金额:2}];
var结果=对象值(arr.reduce((a,curr)=>{
如果(!a[curr.item.id])
使用[curr.item.id]=Object.assign({},curr);//Object.assign(),这样原始元素(Object)就不会发生变化。
其他的
a[curr.item.id]。金额+=当前金额;
返回a;
},{}));
控制台日志(结果)代码>使用map
捕获em all:D
var arr=[{item:{id:1,名称:“Abc”},金额:1},{item:{id:1,名称:“Abc”},金额:2},{item:{id:2,名称:“Abc”},金额:2},{item:{id:1,名称:“Abc”},金额:2}];
var res={};
arr.map((e)=>{
如果(!res[e.item.id])res[e.item.id]=Object.assign({},e);//克隆,贷记到:@amrender singh
else res[e.item.id].amount+=e.amount;
});
console.log(Object.values(res))代码>请添加您已尝试的内容。