当前位置: 首页 > Web前端 > HTML

在js中使用reduce根据元素的某个属性合并一个数组

时间:2023-03-28 16:06:23 HTML

有一个数组如下letarr=[{id:1,num:2,},{id:2,num:3,},{id:3,num:4,},{id:1,num:3,},];//现在需要合并相同的id,累计num实现如下letnewArr=arr.reduce((prev,cur)=>{//prev是新数组,cur是当前元素letids=prev.map((item)=>{returnitem.id;});if(ids.includes(cur.id)){prev=prev.map((item)=>{if(item.id==cur.id){item.num+=cur.num;}returnitem;});}else{prev.push(cur);}returnprev;},[]);控制台日志(newArr);之后发现相同id的merge是累加的。注意:该方法在vue中,一般使用场景会在watch中。记住,累加数字的时候一定要深拷贝赋值,否则会陷入死循环!!!