在javascript中汇总数组

Laz*_*azy 0 javascript arrays

我有这些数组:

// I want to calculate these arrays each other.
var a = [1,2,3]
var b = [1,2,3]
var c = [3,4,5]
// ->
var result = [5, 8, 11]
Run Code Online (Sandbox Code Playgroud)

我可以用下面的方法计算两个数组但是如何求和n个数组呢?

Array.prototype.Sum = function (arr) {
    var s = [];
    if (arr != null && this.length == arr.length) {
        for (var i = 0; i < arr.length; i++) {
            var c = this[i] + arr[i]
            s.push(c);
        }
    }
    return s;
}
Run Code Online (Sandbox Code Playgroud)

Ori*_*iol 5

假设

var arrays = [
    [1,2,3],
    [1,2,3],
    [3,4,5]
];
Run Code Online (Sandbox Code Playgroud)

使用您Sum的EcmaScript 5数组方法,

var result = arrays.reduce(function(arr1, arr2){
    return arr1.Sum(arr2);
});
Run Code Online (Sandbox Code Playgroud)

或者,考虑不污染Array.prototype,只使用像(ES5)这样的东西

var result = arrays.reduce(function(arr1, arr2) {
    return arr1.map(function(num, index){
        return num+arr2[index];
    });
});
Run Code Online (Sandbox Code Playgroud)

或者,使用EcmaScript 6箭头函数简化,

var result = arrays.reduce(
    (arr1, arr2) => arr1.map(
        (num, index) => num+arr2[index]
    )
);
Run Code Online (Sandbox Code Playgroud)