我试图用随机嵌套的数组来压扁数组.我不确定为什么我写的函数最终会在无限循环中结束:
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)
Run Code Online (Sandbox Code Playgroud)
我认为应该发生的是:
当我在for循环检查时[3]
,它进入if语句,flattener
再次被调用,它解析,然后我退出if语句.
相反,if语句一直调用[3]
无限检查,我不确定为什么会这样.
问题是你没有声明i
变量,所以它泄漏到全局空间并在递归时被重置.
更改:
for(i = 0; i < array.length; i++){
Run Code Online (Sandbox Code Playgroud)
至:
for(var i = 0; i < array.length; i++){
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
66 次 |
最近记录: |