原理:需要一個新的數組存儲合並后的對象,因為原對象數組中存儲的有相似的對象,新數組是存儲對的是對原數組合並后的對象,索引它們的索引是對不上的,這里就需要一個新數組進行標記,對已經加入到新數組的對象進行標示,再用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);