存在数组如下
let arr = [
{
id: 1,
num: 2,
},
{
id: 2,
num: 3,
},
{
id: 3,
num: 4,
},
{
id: 1,
num: 3,
},
];
//现在需要将id相同的进行合并,并且累计num
实现方案如下
let newArr = arr.reduce((prev, cur) => {
//prev是新数组,cur是当前元素
let ids = prev.map((item) => {
return item.id;
});
if (ids.includes(cur.id)) {
prev = prev.map((item) => {
if (item.id == cur.id) {
item.num += cur.num;
}
return item;
});
} else {
prev.push(cur);
}
return prev;
}, []);
console.log(newArr);
之后就发现,id相同的合并累加了。
注意点:此方法在vue中,一般使用场景会在watch中,切记,在累加数量的时候要深拷贝赋值,否则会陷入无限循环!!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。