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))请添加您已尝试的内容。