javascript - JavaScript 中的聚合记录

标签 javascript arrays object

给定代表一系列事务的对象数组,即

[{ person: 'a', sweets: 5 }, { person: 'b', sweets: 8 }, { person: 'a', sweets: 6 }]

如何有效地整合这些记录,得出每个人的总计数,即:

[{ person: 'a', sweets: '11'}, { person: 'b', sweets: 8 }]

是否有一些我不知道的内置功能,或者我必须制作一个原型(prototype)吗?

最佳答案

您可以使用哈希表进行分组和求和。

var data = [{ person: 'a', sweets: 5 }, { person: 'b', sweets: 8 }, { person: 'a', sweets: 6 }],
    grouped = [];

data.forEach(function (a) {
    if (!this[a.person]) {
        this[a.person] = { person: a.person, sweets: 0 };
        grouped.push(this[a.person]);
    }
    this[a.person].sweets += a.sweets;
}, Object.create(null));

console.log(grouped);

关于javascript - JavaScript 中的聚合记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40330392/

相关文章:

Javascript 生成的表不起作用

javascript - 使用 if 语句添加对象属性

python - 类变量是可变的吗?

javascript - typescript :如何键入具有在实例化时不可用的必填字段的对象?

c# - 动态创建和删除对象

javascript - 使用回调返回数据后,函数仍然捕获来自其他函数的错误

javascript - 在单元格内单击时调用函数

Javascript:如何清除非全局(封闭)setTimeout?

javascript - 在去路线之前显示进度条

C 2D 字符数组 ("Warning initialization from incompatible pointer")