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);

浙公网安备 33010602011771号