在 JavaScript 中计算数组值

1 javascript arrays function

我必须创建一个函数来接收一个数组,其中每个元素都是数字,或者它可以是另一个内部有数字的数组,例如: const array = [1, [2, [3,4]], [5, 6]、7];该函数应该计算所有值并返回 countArray(array); --> 应该返回 28 因为 (1 + 2 + 3 + 4 + 5 + 6 + 7)

我试过这个

const array = [1, [2, [3,4]], [5,6], 7];

var countArray = function(array) {
  let sum = 0
  for (let i = 0; i < array.length; i++) {
    if (Array.isArray(array[i])) {
      countArray(array[i])
    }
    sum = sum + array[i]
  }
  return sum
}

console.log(countArray(array));
Run Code Online (Sandbox Code Playgroud)

但这不起作用,有人知道为什么吗?

小智 5

首先,您需要对传入的嵌套数组执行 single 操作。
您可以使用flat()方法。

var nestedArray = [0, 1, 2, [3, 4]]; 
var flatArray = nestedArray.flat(Infinity); // [0,1,2,3,4];
Run Code Online (Sandbox Code Playgroud)

Array.prototype.reduce可用于迭代数组,
将当前元素值添加到先前元素值的总和中

var totalSum = flatArray.reduce(function (accumulator, a) {
  return accumulator + a;
}, 0)
Run Code Online (Sandbox Code Playgroud)

所以,

var nestedArray = [0, 1, 2, [3, 4]]; 
var flatArray = nestedArray.flat(Infinity); // [0,1,2,3,4];
Run Code Online (Sandbox Code Playgroud)