js数组合并去重

let arr=[{id:1,value:2},{id:2,value:6},{id:1,value:4},{id:2,value:1}] 最后转换成
[{id:1,value:6},{id:2,value:7}]

阅读 4.5k
3 个回答
var arr1 = [];
for(var i = 0 ;i < arr.length ; i++){
    var obj = arr[i];
    for(var j = i + 1 ; j < arr.length ; j++){
        if(obj.id == arr[j].id){
            obj.value += arr[j].value;
            arr.splice(j,1);
            j--;
        }    
    }
    arr1.push(obj);
}
const newArr = [...new Set(arr.map(a => a.id))].map(id => ({
  id,
  value: arr.filter(a => a.id === id).reduce((a, b) => a + b.value, 0),
}))
let uniq=new Map()
// 去重合并
for(let i=0;i<arr.length;i++){
    let id=arr[i].id,val=arr[i].value
    if(uniq.has(id)) uniq.set(id,uniq.get(id)+val)
    else uniq.set(id,val)
}
let res=[]
// 放入数组
for(let comb of uniq){
    res.push({
        id:comb[0],
        value:comb[1]
    })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题