我需要帮助尝试获得多维数组的总和

Adr*_*cas 3 javascript sum

var nestedArr3 = [[[1,2],[3,4]],[[5,6]]];

function sumTotal() {
  var sum = 0;
  for (var i = 0; i < nestedArr3.length; i++) {
    for (var j = 0; j < nestedArr3[i].length; j++) {
      if (typeof nestedArr3[i][j] === "number") {
        sum += nestedArr3[i][j];
      } else if (Array.isArray(nestedArr3[i][j] === true)) {
        sumTotal(nestedArr3[i][j]);
      }
    }
  }
  return console.log(sum);
}

console.log(sumTotal());
Run Code Online (Sandbox Code Playgroud)

我得到0的结果.我无法弄清楚如何修复此代码.任何帮助,将不胜感激.

Cer*_*nce 5

一些问题:

  • 如果您要尝试递归解决方案,最好只在再次调用之前尝试递归一个元素sumTotal,否则您重复(WET)代码

  • 使用递归时,您需要return在结尾处得到结果,以便调用者可以访问结果

  • Array.isArray(nestedArr3[i][j] === true))看起来像一个错字-移动true 之外的的Array.isArray呼叫

这是工作代码:

var nestedArr3=[[[1,2],[3,4]],[[5,6]]]

function sumTotal(arr) {
  var sum = 0;
  for (var i = 0; i < arr.length; i++) {
    if (typeof arr[i] === "number") {
      sum += arr[i];
    } else if (Array.isArray(arr[i])) {
      sum += sumTotal(arr[i]);
    }
  }
  return sum;
}

console.log(sumTotal(nestedArr3));
Run Code Online (Sandbox Code Playgroud)

但是reduce相反,假设所有元素和子元素都是数字或数组:

var nestedArr3=[[[1,2],[3,4]],[[5,6, [[100, 100, [100]]] ]]]
const sumTotal = (arr) => arr.reduce(
  (a, element) => a + (
    typeof element === 'number' ? element : sumTotal(element)
  ),
  0
);
console.log(sumTotal(nestedArr3));
Run Code Online (Sandbox Code Playgroud)