javascript - 按索引对 javascript mutliarray 进行分组并获得总和和平均值
问题描述
我在 Javascript 中有一个多数组,格式如下
[ [string, string, string, number, number], ......]
例如
[
['John', 'Apple', 'Monday', 1, 4.5],
['John', 'Orange', 'Monday', 2, 3],
['John', 'Apple', 'Monday', 1, 2.5]
]
如何按前三个项目(字符串)对上述内容进行分组并获得第一个数字的总和和第二个数字的平均值?
上面的结果:
[
['John', 'Apple', 'Monday', 2, 3.5],
['John', 'Orange', 'Monday', 2, 3],
]
我以前用下划线来做这件事,但现在我只需要使用 Javascript 或 jQuery。
我发现了类似的问题(不完全是)但没有太大帮助
解决方案
您可以获取一个对象并收集这些值以供以后生成平均值。
var array = [['John', 'Apple', 'Monday', 1, 4.5], ['John', 'Orange', 'Monday', 2, 3], ['John', 'Apple', 'Monday', 1, 2.5]],
result = Object
.values(array.reduce((r, a) => {
var key = a.slice(0, 3).join('|');
if (!r[key]) {
r[key] = a.slice().concat(1);
return r;
}
r[key][3] += a[3];
r[key][4] += a[4];
r[key][5]++;
return r;
}, Object.create(null)))
.map(a => a.slice(0, 4).concat(a[4] / a[5]));
console.log(result);
推荐阅读
- awk - 使用 awk 打印字段的一部分
- python - 缺少 Python3_SOABI 的 Windows 上的 find_package python3 错误
- python - 有没有办法在训练期间将弱权重归零?例如,如果权重的绝对值低于 0.05,只需将该权重设置为 0
- php - 里程表在wordpress页面中不生效
- elasticsearch - 如何为 ElasticSearch 添加基本用户/通过身份验证
- excel - 如何在excel中进行减法?
- haskell - 将 Haskell 转换为模板 Haskell:无法匹配预期类型 ExpQ
- quarkus - quarkus dev with sentry 抛出 java.lang.ClassNotFoundException: com.fasterxml.jackson.core.JsonFactory
- php - 更新到 macOS Big Sur 后,我无法使用 MAMP 连接到我的 PostgreSQL 数据库
- javascript - 如何在html中包含javascript