2016-07-29 63 views
0

我有一个简单的问题如何打印使用递归嵌套数组的地位和价值在Javascript

有使用递归我要打印所有嵌套阵列以及主阵列值的嵌套列表。

在-把

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 

但我能打印只能做到一级深

var list = ['a', ['a','b','c',['a','b','c']],'b', 'c']; 
 
\t \t \t var printList = function(name,list){ 
 

 
\t \t \t \t for(var i=0;i< list.length;i++){ 
 

 
\t \t \t \t \t if(Array.isArray(list[i])) 
 
\t \t \t \t \t  \t { 
 
\t \t \t \t \t  \t  \t \t printList(name+'.'+i,list[i]); 
 

 
\t \t \t \t \t  \t } 
 
\t \t \t \t \t  \t else{ 
 

 
\t \t \t \t \t  \t  \t document.write(name+'.'+i+'.'+list[i]+'<br/>'); 
 
\t \t \t \t \t  \t  \t 
 
\t \t \t \t \t  \t } 
 
\t \t \t \t \t  \t  \t 
 
\t \t \t \t } 
 
\t \t \t } 
 

 
\t \t \t printList('foo',list);

我添加的代码片段看看

感谢

+1

那么期望的输出应该如何呢? – VisioN

+0

[访问/进程(嵌套)对象,数组或JSON可能的重复](http://stackoverflow.com/questions/11922383/access-process-nested-objects-arys-or-json) – Teemu

+0

@VisioN其不打印数组的所有元素,如果您看到它只在第一个数组“foo.1.x.vlaues”结束时才打印,则它不打印“foo.2.0.b”和“foo.3.0.c” ' – Vikram

回答

2

这是因为在我的for循环成为一个全局变量,使得它在递归一旦失去它的价值。

add var i;声明之前for循环的功能和问题应该解决。

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); 
+0

我要试试看 – Vikram