如何使用Javascript中的递归打印嵌套数组的位置和值

时间:2016-07-29 10:15:06

标签: javascript recursion

我有一个简单的问题

有一个使用递归的嵌套列表我必须打印所有嵌套数组以及主数组的值。

输入

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




我添加了代码片段看看

谢谢

1 个答案:

答案 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);