【问题标题】:Sum arrays in array (JavaScript) [duplicate]对数组中的数组求和(JavaScript)[重复]
【发布时间】:2019-01-22 11:01:36
【问题描述】:

我有一个由多个数组组成的数组:

var array = [[1], [2, 1, 1], [3, 4]];

现在我想得到一个数组,它的元素是变量“array”中每个数组的总和。在这个例子中,这将是 var sum = [1, 4, 7]。我该怎么做?

【问题讨论】:

    标签: javascript arrays sum


    【解决方案1】:

    您可以使用Array#map 退回新商品。可以使用Array#reduce准备项目来总结所有内部元素。

    var array = [[1], [2, 1, 1], [3, 4]];
    
    var newArray = array
      .map(arr => arr.reduce((sum, item) => sum += item, 0));
    
    console.log(newArray);

    【讨论】:

    • 什么方法可以得到这样的结果 [6,5,1] 将数组的每个值添加到同一索引中的另一个数组。
    【解决方案2】:

    您需要遍历每个单独的数组,然后将其元素相加并返回一个新数组。

    要返回新数组,您可以使用 map & 计算总和使用 reduce

    var array = [
      [1],
      [2, 1, 1],
      [3, 4]
    ];
    
    let m = array.map(function(item) {
    
      return item.reduce(function(acc, curr) {
        acc += curr;
        return acc;
      }, 0)
    })
    
    console.log(m)

    【讨论】:

      【解决方案3】:

      您需要循环第一个数组以找到内部数组,然后逐个循环所有内部数组以获得总和,并在内部数组的循环完成后继续将其推送到新数组。

      var array = [[1], [2, 1, 1], [3, 4]];
      var sumArray = [];
      array.forEach(function(e){
      	var sum = 0;
      	e.forEach(function(e1){
      		sum += e1; 
      	});
      	sumArray.push(sum);
      });
      console.log(sumArray);

      【讨论】:

        【解决方案4】:

        我会这样写:

        var array = [[1], [2, 1, 1], [3, 4]];
        
        var m = array.reduce(
          (acc, curr) => acc.concat(curr.reduce((memo, number) => memo + number, 0)),
          []
        );
        console.log(m);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-15
          • 1970-01-01
          • 1970-01-01
          • 2018-05-17
          • 2013-04-10
          • 1970-01-01
          • 2017-02-17
          • 2021-05-31
          相关资源
          最近更新 更多