javascript - 求和多维数组javascript中的所有整数

标签 javascript arrays loops multidimensional-array sum

假设我有这个:

function arrSum(){
  *code here*
}

如何编写 arrSum 函数,使其可以对多维数组(可变深度)中的所有整数求和。

arrSum([2, 5, [4, 6], 5]) === 22;

我知道某处一定有答案,但我真的找不到。如果这是重复的,请告诉我。

最佳答案

简单地说,你可以用递归写一个这样的函数

function arrSum(arr) {
  var sum = 0;
  // iterate array using forEach, better to use for loop since it have higher performance
  arr.forEach(function(v) {
    // checking array element is an array
    if (typeof v == 'object')
      // if array then getting sum it's element (recursion)
      sum += arrSum(v);
    else
      // else adding the value with sum
      sum += v
  })
  // returning the result
  return sum;
}

console.log(arrSum([2, 5, [4, 6], 5]) === 22);

使用for 循环

function arrSum(arr) {
  var sum = 0;
  for (var i = 0; i < arr.length; i++) {
    if (typeof arr[i] == 'object')
      sum += arrSum(arr[i]);
    else
      sum += arr[i];
  }
  return sum;
}

console.log(arrSum([2, 5, [4, 6], 5]) === 22);

关于javascript - 求和多维数组javascript中的所有整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33665228/

相关文章:

javascript - 澄清跨域AJAX?

arrays - 在 jq 中基于另一个数组获取数组

Python - 迭代字典键时的性能

Javascript,比较数组中的元素,如果为 true 则执行函数

用于检查 PWA 或移动 Web 的 Javascript

javascript - JavaScript 中的一行 if/else

javascript - javascript中循环对象的问题

javascript - jQuery 字符串分割问题

javascript - JQuery - 如何存储收到的每个数据

java - for-each 循环内的 if-else