javascript - 如何在 javascript 中对这个对象数组进行分组或合并?

标签 javascript arrays grouping javascript-objects

例如,我有一个对象数组,如下所示。

{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}

我想将它们分组并将其中的所有值相加。例如,最终会是这样的:

{name: "Mc Donald", quantity: 8, maleCount: 1, femaleCount: 1}
{name: "KFC", quantity: 54, maleCount: 3, femaleCount: 3}

如何在 JavaScript 中实现这一点?

我试图在网上找到一些解决方案,但它不是我想要的。例如这个 solution

最佳答案

你可以使用数组化简:

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);

关于javascript - 如何在 javascript 中对这个对象数组进行分组或合并?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46664213/

相关文章:

javascript - window.closed IE9 在窗口仍然打开时报告 true

javascript - 如何在 JavaScript 中模拟 64 位(无符号)整数的按位旋转?

Java - 使用数组查找/打印最小值/最大值?

javascript - ng-click 触发 app.js 中的函数不起作用

r - 按多列分组并对其他多列求和

python - 将 pandas 中的 groupby() 拆分为更小的组并将它们组合起来

linux - 按字母顺序分组对文本文件进行排序 (Linux)

javascript - 在 JavaScript 中解析 URL

javascript - 将输入设置为能够读取整数值

Javascript:从数组创建表