这是一个给出的数组:
let arrayNumbers = [ 5, 7,
[ 4, [2], 8, [1,3], 2 ],
[ 9, [] ],
1, 8
];
并且输出必须是
50
此代码必须是 WITHOUT Array.isArray;
let sum = 0;
function treeSum(array) {
for (let i = 0; i < array.length; i++) {
if (array[i] === false) {
treeSum(array[i]);
} else {
sum += array[i];
}
}
return sum;
}
treeSum(arrayNumbers);
帮助,请提供一个想法或代码,谢谢。
最佳答案
您需要使用本地 sum
变量以及防止重复添加嵌套总和。
您可以检查该项目是否
Array
的一个实例与 instanceof
operator , 的function treeSum(array) {
var sum = 0;
for (let i = 0; i < array.length; i++) {
sum += array[i] instanceof Array ? treeSum(array[i]) : array[i];
}
return sum;
}
let arrayNumbers = [5, 7, [4, [2], 8, [1, 3], 2], [9, []], 1, 8];
console.log(treeSum(arrayNumbers));
Array
作为 Object#constructor
.function treeSum(array) {
var sum = 0;
for (let i = 0; i < array.length; i++) {
sum += array[i].constructor === Array ? treeSum(array[i]) : array[i];
}
return sum;
}
let arrayNumbers = [5, 7, [4, [2], 8, [1, 3], 2], [9, []], 1, 8];
console.log(treeSum(arrayNumbers));
关于javascript - 如何对嵌套数组中的所有元素求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949920/