首页 > 编程语言 > 详细

es6根据数组对象里的指定字段累加并去重

时间:2021-04-13 16:55:54      阅读:24      评论:0      收藏:0      [点我收藏+]

例如:

const arr = [
    {id:1,typeId:1,num:2},
    {id:2,typeId:1,num:5},
    {id:3,typeId:2,num:2},
    {id:4,typeId:2,num:1},
    {id:5,typeId:3,num:2},
    {id:6,typeId:3,num:2},
    {id:7,typeId:3,num:2},
];

如果只是去重使用map()和filter()方法就行

const res = new Map();
arr.filter((item)=>{
    !res.has(item.typeId) && res.set(item.typeId,1)
});

现在我想要的是能够去重,但相同的typeId的num要累加
最后的结果希望是这样的:

const arr = [
    {id:1,typeId:1,num:7},
    {id:3,typeId:2,num:3},
    {id:5,typeId:3,num:6},
];

 解决方法:

arr.reduce((list, item)=>{
    if(res.has(item.typeId)){
        res.get(item.typeId).num += item.num
    }else{
        let o = {...item}
        list.push(o)
        res.set(item.typeId, o)
    }
    
    return list
}, []);

showtooltip.com

es6根据数组对象里的指定字段累加并去重

原文:https://www.cnblogs.com/coding8832/p/14652179.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!