我正在尝试展平一个内部随机嵌套数组的数组。我不确定为什么我编写的函数会陷入无限循环:
let array = [1, 2, [3]]
var final_array = []
function flattener(array){
for(i = 0; i < array.length; i++){
if(array[i] instanceof Array){
flattener(array[i])
}else{
final_array.push(array[i])
}
}
}
flattener(array)
我认为应该发生的是:
当我在 for 循环中检查 [3]
时,它进入 if 语句,再次调用 flattener
,它解析,然后我退出if 语句。
相反,if 语句不断调用以检查 [3]
,我不确定为什么会这样。
最佳答案
问题是您没有声明 i
变量,所以它会泄漏到全局空间并在递归时被重置。
改变:
for(i = 0; i < array.length; i++){
收件人:
for(var i = 0; i < array.length; i++){
关于javascript - 展平 JavaScript 数组——为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743722/