我必须创建一个函数来接收一个数组,其中每个元素都是数字,或者它可以是另一个内部有数字的数组,例如: 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)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |