当前位置:  开发笔记 > 编程语言 > 正文

如何将数组数组中相同索引处的元素加到一个数组中?

如何解决《如何将数组数组中相同索引处的元素加到一个数组中?》经验,为你挑选了3个好方法。

假设我有一个数组数组,如下所示:

[
  [0, 1, 3],
  [2, 4, 6],
  [5, 5, 7],
  [10, 0, 3]
]

如何生成一个新数组,该数组在javascript中对内部数组的每个位置的所有值求和?在这种情况下,结果将是:[17,19,19].无论内部数组的长度如何,我都需要能够提供一个有效的解决方案.我认为这可以使用map和for-of的一些组合,或者可能减少,但我不能完全围绕它.我搜索过但找不到任何与此相符的例子.



1> Nina Scholz..:

你可以Array.prototype.reduce()结合使用Array.prototype.forEach().

var array = [
        [0, 1, 3],
        [2, 4, 6],
        [5, 5, 7],
        [10, 0, 3]
    ],
    result = array.reduce(function (r, a) {
        a.forEach(function (b, i) {
            r[i] = (r[i] || 0) + b;
        });
        return r;
    }, []);
document.write('
' + JSON.stringify(result, 0, 4) + '
');


2> Tamas Hegedu..:

使用Lodash 4:

function sum_columns(data) {
  return _.map(_.unzip(data), _.sum);
}

var result = sum_columns([
  [1, 2],
  [4, 8, 16],
  [32]
]);

console.log(JSON.stringify(result));


3> isvforall..:

在一衬ES6,与mapreduce

var a = [ [0, 1, 3], [2, 4, 6], [5, 5, 7], [10, 0, 3] ];

var sum = a[0].map((_, i) => a.reduce((p, _, j) => p + a[j][i], 0));

document.write(sum);
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有