【问题标题】:Reduce giving errors for multidimensional array sum js减少多维数组求和 js 的错误
【发布时间】:2022-01-27 12:06:05
【问题描述】:

得到错误 arr.reduce 不是多维数组的函数 - 适用于简单数组 - 不确定出了什么问题?

let arr = [4, [5, 7]]
let sum = 0

const calculateSum = (arr) => {
  return arr.reduce(function(acc, currentVal) {
    const isEntryArray = Array.isArray(currentVal)
    if (isEntryArray) {
      acc= acc + calculateSum(isEntryArray)
    } else {
      acc = acc + currentVal
    }
    return acc
  }, 0)
}
console.log(calculateSum(arr))
console.log(sum) ```

【问题讨论】:

    标签: javascript reduce


    【解决方案1】:

    当你传递一个布尔值而不是一个数组时:

    acc= acc + calculateSum(isEntryArray)
                            // ^^^ from Array.isArray()
    

    我相信你想要的是传入当前子数组

    acc= acc + calculateSum(currentVal)
    

    【讨论】:

      【解决方案2】:

      而不是使用递归函数flatten the array,然后使用reduce来计算总和。

      const arr = [4, [5, 7, [12, [1, 2]]]];
      
      function calculateSum(arr) {
        return arr.flat(Infinity).reduce(function (acc, c) {
          return acc + c;
        }, 0);
      }
      
      console.log(calculateSum(arr));

      【讨论】:

      • .flat(Infinity) 很漂亮。
      猜你喜欢
      • 1970-01-01
      • 2013-04-15
      • 2020-05-22
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多