【问题标题】:Sum all Elements in each Array on Multiple Dynamic Arrays在多个动态数组上对每个数组中的所有元素求和
【发布时间】:2022-01-12 06:18:58
【问题描述】:

我们如何对多个数组中的每个数组元素求和

ex : [[2, 1], [1, 4]]
output : [3], [5]

在此代码中是基于每个数组中的索引的总和

const in_out = [
  [2, 1],
  [1, 4]
]

function calculate(arr) {
  a = arr.reduce((prev, curr) => prev + curr[idx = 0], 0)
  b = arr.reduce((prev, curr) => prev + curr[idx = 1], 0)
  c = [a + b]
  return c
}

console.log(calculate(in_out))

我想要的是基于每个数组的求和,以及像这样的动态“in_out”变量

[2, 1] = 3 and [1, 4] = 5

console.log(calculate (in_out [[2, 1], [1, 4]] ) );

和输出

[8]

【问题讨论】:

  • 你的数组总是二维数组?
  • @SaeedShamloo 是的
  • function calculate(arr) { return arr.map(sub =>[sub.reduce((acc,num)=>acc+num)]) } 这能解决你的问题吗?
  • @SaeedShamloo 是的,它帮助了我很多,但是当我尝试添加 console.log(calculate (in_out [[2, 1], [1, 4]] ) );它不起作用

标签: javascript arrays


【解决方案1】:

使用Array.reduce() 方法2 次,外部的将给您转换后的数组,嵌套的将给您总和。

const list = [
  [2, 1],
  [1, 4]
];

function calculate(arr) {
  return arr.reduce((acc, items) => acc.concat(items.reduce((sum, curr) => sum + curr, 0)), [])
}

console.log(calculate(list))

【讨论】:

    【解决方案2】:

    常规方式!

    function sumTwoDimensi(arr){
      var arrSum = []; 
    
      for(let i = 0; i < arr.length; i++) {
        var sum = 0;
        for (let j = 0; j < arr[i].length; j++) {
          sum = (sum+arr[i][j]);
        }
        arrSum[i] = sum;
      }
    
      return arrSum
    }
    

    然后计算全部,就这个函数:

    function sumArr(ar) {
      var sum = 0;
      for (var i = 0; i < ar.length; i++) {
        sum += ar[i];
      }
      return sum;
    }
    

    使用示例:

    console.log(sumTwoDimensi(in_out));
    console.log(sumArr(sumTwoDimensi(in_out)));
    

    复制它!

    【讨论】:

    • 以及如何总结所有价值?例如:3 + 5 =8
    • 我已经编辑过了,抱歉我错过了。你现在可以试试
    • 当我将运算符“+”更改为“-”时,值会更改为负数而不是减去例如:[2 - 1] 它应该是“1”而不是“-3”你能解释一下吗我?为什么会这样?
    • 因为这只是求和,我认为你需要使用另一个函数进行减法.. 对它的解释,因为 sum 的初始化为 0,它将是 [0 - firstArray],它会是错误的答案
    • 但是当我们有这样的数组时会很麻烦 [[3, 4, 5], [5, 7]]
    【解决方案3】:

    你可以试试这样的

    function in_out(arr){
      var output = []
      arr.map(arrElement=>{
         var sum = 0;
         arrElement.map(el=>{
            sum += el
         })
         output.push([sum])
      })
      return output
    }
    console.log(in_out([[2,1],[1,4]]))

    【讨论】:

      【解决方案4】:

      只需映射和减少:

      const in_out = [[2, 1],[1, 4],[1,2,3,4],[],[9,8,7,6],[9]];
      
      const calculate = (data) => 
        data.map((arr) => 
          arr.reduce((sum, num) => sum + num, 0)
        );
        
      console.log(calculate(in_out));
      .as-console-wrapper{min-height: 100%!important; top: 0}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 1970-01-01
        • 2018-09-09
        • 1970-01-01
        相关资源
        最近更新 更多