一个数组里面是多个对象,每个对象里面又有多个数据,如何根据对象ID将数据合并
//数据
let data= [
{id:1,price:208,list:{price:110,priceId:11}},
{id:2,price:208,list:{price:21,priceId:21}},
{id:3,price:108,list:{price:110,priceId:31}},
{id:1,price:108,list:{price:2210,priceId:101}},
]
实现:
let newGoodsData = [];//接收处理之后的结果
let templ = []; //接收循环过的id
for (let i = 0; i < data.length; i++) {
if (templ.indexOf(data[i].id) === -1) {
newGoodsData.push({
id: data[i].id,
price: data[i].price,
list: [data[i].list],
});
templ.push(data[i].id);
} else {
for (let j = 0; j < newGoodsData.length; j++) {
if (newGoodsData[j].id=== data[i].id) {
newGoodsData[j].list.push(data[i].list);
break;
}
}
}
}
结果:
console.log(newGoodsData )
// [
{id:1,price:208,list:[{price:110,priceId:11},{price:2210,priceId:101}]},
{id:2,price:208,list:{price:21,priceId:21}},
{id:3,price:108,list:{price:110,priceId:31}}
]