存在数组如下
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);
【js中使用reduce将一个数组,根据元素的某个属性进行合并】之后就发现,id相同的合并累加了。
注意点:此方法在vue中,一般使用场景会在watch中,切记,在累加数量的时候要深拷贝赋值,否则会陷入无限循环!!!
推荐阅读
- 选择篇(022)-下面代码的输出是什么?
- 从0到1搭建组件库
- JS中 &&、|| 和 & 、| 的使用
- Mac 上制作 SSL 证书
- JavaScript 基本数据类型转换
- 微信商城小程序开发方式有哪些()
- Form 表单在数栈的应用(下)(深入篇)
- 选择篇(019)-下面代码的输出是什么?
- 选择篇(020)-下面代码的输出是什么?
- 选择篇(018)-下面代码的输出是什么?