2016-07-29 54 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