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