Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我试图对嵌套数组中的元素求和。例如,
一切似乎都正常,除非我尝试
一切顺利,直到代码到达该代码。我试图返回数组的值,但我完全没有看到任何问题。
谁能告诉我我的代码有什么问题吗?
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我试图对嵌套数组中的元素求和。例如,
arraySum([1,[2,3],5,[[4]]])
应该返回15
一切似乎都正常,除非我尝试
return array.pop() + arraySum(array)
进入一个奇怪的无限循环。一切顺利,直到代码到达该代码。我试图返回数组的值,但我完全没有看到任何问题。
谁能告诉我我的代码有什么问题吗?
var arraySum = function(array) {
if(array.length === 0){
return 0
}
if(Array.isArray(array[array.length - 1])){
var x = array[array.length - 1].reduce((accumulator, currentValue) => accumulator + currentValue);
array.pop()
array.push(x)
return arraySum(array)
}
return array.pop() + arraySum(array)
};
console.log(arraySum([1,[2,3],5,[[4]]]))
最佳答案
一些热烈的递归可以在这里解决我们的问题。问题是您在对数组进行迭代的同时对其进行了变异,特别是将项目推回了数组。实际上,您绝对不应这样做。
function arraySum(array) {
if (array.length === 0) {
return 0;
}
return array.reduce((previous, current) => {
if (Array.isArray(current)) {
return previous + arraySum(current);
}
return previous + current;
}, 0);
}
console.log(arraySum([1, [2, 3], 5, [[4]]]));
09-25 18:32