JavaScript对数组中有相似属性对象进行合并
原理:需要一个新的数组存储合并后的对象,因为原对象数组中存储的有相似的对象,新数组是存储对的是对原数组合并后的对象,索引它们的索引是对不上的,这里就需要一个新数组进行标记,对已经加入到新数组的对象进行标示,再用includes()和indexOf()等方法进行判断是否已经合并过了,没合并过的直接按照需求对属性处理后加入新数组和标示数组中,新数组中有了就进行合并操作。
代码:
let list=[ { id:1, name:"测试", num:1, }, { id:1, name:"测试1", num:1, }, { id:2, name:"测试2", num:1, }, { id:1, name:"测试1", num:1, }, { id:1, name:"测试1", num:1, }, { id:2, name:"测试2", num:1, }, ]; let idList=[]; let newList=[]; list.forEach((item,index)=>{ if(idList.indexOf(item.id)=='-1'){ //新数组里面没有直接加入 newList.push({ id:item.id, num:item.num, name:item.name }) idList.push(item.id); }else{ //需要合并的属性 newList[idList.indexOf(item.id)].num+=item.num; newList[idList.indexOf(item.id)].name+=item.name } }) console.log('newList-------',newList);