我有一个简单的问题
有一个使用递归的嵌套列表我必须打印所有嵌套数组以及主数组的值。
输入
foo@bar.com
出放
var list = ['a', ['a','b','c',['a','b','c']],'b', 'c'];
printList('foo',list);
但我只能打印到一个深度
foo.0.a
foo.1.0.a
foo.1.1.b
foo.1.2.c
foo.1.3.0.a
foo.1.3.1.b
foo.2.b
foo.3.c

我添加了代码片段看看
谢谢
答案 0 :(得分:2)
这是因为for循环中的i变成了一个全局变量,使它在递归时松散了它的值。
在函数循环之前添加var i;
声明,问题应该解决。
var list = ['a', ['a','b','c',['a','b','c']],'b', 'c'];
var printList = function(name,list){
var i;
for(i=0;i< list.length;i++) {
if(Array.isArray(list[i])) {
printList(name+'.'+i,list[i]);
} else {
document.write(name+'.'+i+'.'+list[i]+'<br/>');
}
}
}
printList('foo',list);