首页 > 解决方案 > 按索引对 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。

我发现了类似的问题(不完全是)但没有太大帮助

标签: javascriptjqueryarrays

解决方案


您可以获取一个对象并收集这些值以供以后生成平均值。

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


推荐阅读