How to group or merge this array of objects in javascript?

前端 未结 8 842
悲&欢浪女
悲&欢浪女 2020-12-18 23:22

I have an array of objects like below for example.

{name: \"Mc Donald\", quantity: 4, maleCount: 1, femaleCount: 0}
{name: \"KFC\", quantity: 9, maleCou         


        
8条回答
  •  时光取名叫无心
    2020-12-18 23:46

    You can use array reduce:

    var arr = [
        {name: "Mc Donald", quantity: 4, maleCount: 1, femaleCount: 0},
        {name: "KFC", quantity: 9, maleCount: 1, femaleCount: 0},
        {name: "KFC", quantity: 9, maleCount: 1, femaleCount: 0},
        {name: "Mc Donald", quantity: 4, maleCount: 0, femaleCount: 1},
        {name: "KFC", quantity: 9, maleCount: 0, femaleCount: 1},
        {name: "KFC", quantity: 9, maleCount: 1, femaleCount: 0},
        {name: "KFC", quantity: 9, maleCount: 0, femaleCount: 1},
        {name: "KFC", quantity: 9, maleCount: 0, femaleCount: 1}
    ];
    
    var finalArr = arr.reduce((m, o) => {
        var found = m.find(p => p.name === o.name);
        if (found) {
            found.quantity += o.quantity;
            found.maleCount += o.maleCount;
            found.femaleCount += o.femaleCount;
        } else {
            m.push(o);
        }
        return m;
    }, []);
    
    console.log(finalArr);

提交回复
热议问题