es6根據數組對象里的指定字段累加並去重


例如:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM