添加n个数组的值

时间:2018-05-23 11:03:26

标签: javascript arrays typescript

我有一个包含值的数组,它看起来像这样

var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];

我想添加values变量中存在的所有数组,例如

sum = [126,198,154,230]

126 = 23 + 26 + 45 + 32

198 = 45 + 35 + 73 + 45

我尝试使用Array.prototype.map(),但也许我没有得到完美的逻辑来做到这一点所需的帮助。如何添加n个数组的值。

5 个答案:

答案 0 :(得分:4)

是的,你可以映射单个值的总和,但你也需要减少数组。

var values = [[23, 45, 12, 67], [26, 35, 65, 23], [45, 73, 12, 54], [32, 45, 65, 86]],
    result = values.reduce((a, b) => a.map((v, i) => v + b[i]));
    
console.log(result);

答案 1 :(得分:0)

您可以将array#reducearray#forEach一起使用。迭代数组,对于数组中的每个数组,在新数组中求和它的值,并根据索引将其他数组添加到结果中。

var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]],
    result = values.reduce((r,a) => {
      a.forEach((v,i) => r[i] = (r[i] || 0) + v);
      return r;
    }); 
console.log(result);

答案 2 :(得分:0)

我的解决方案是:



const values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];

const res = values.reduce((curr, next) => {

  let length = curr.length;
  for(let i = 0; i < length; i++) {
    curr[i] += next[i]
  }
  return curr;
});

console.log(res);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您的代码有点像这样,

var sum;
var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];
values.forEach(myFunction);

function myFunction(item, index) {
     item..forEach(ArraySum)
}

function ArraySum(item, index) {
     sum=sum+item;
}

答案 4 :(得分:0)

您可以将Array.prototype.map()Array.prototype.reduce()

结合使用

代码示例:

const values = [[23, 45, 12, 67], [26, 35, 65, 23], [45, 73, 12, 54], [32, 45, 65, 86]];
const result = values.map((v, index, array) => v.reduce((a, c, i) => a + array[i][index], 0));
    
console.log(result);