我想递归遍历一棵树,但是递归函数一旦到达最深的嵌套元素就停止了,而不是完成它之前的所有其他循环。我在下面复制了问题,并得到了输出:
1
[2, [3, [4, 5], 6], 7]
2
[3, [4, 5], 6]
3
[4, 5]
4
5
当我应该得到这个时:
1
[2, [3, [4, 5], 6], 7]
2
[3, [4, 5], 6]
3
[4, 5]
4
5
6
7
8
任何帮助将不胜感激。
function recurse(lst) {
for (i=0; i<lst.length; i++) {
console.log(lst[i]);
if (Array.isArray(lst[i])) {
recurse(lst[i]);
}
}
}
recurse([1, [2, [3, [4, 5], 6], 7], 8]);
答案 0 :(得分:0)
您可以使用let声明循环变量 i ,该变量将声明块作用域局部变量:
function recurse(lst) {
for (let i=0; i<lst.length; i++) {
console.log(lst[i]);
if (Array.isArray(lst[i])) {
recurse(lst[i]);
}
}
}
recurse([1, [2, [3, [4, 5], 6], 7], 8]);