2011-08-18 11 views
11

配列の配列(グラフのようなもの)、すべての配列をどのように反復するのですか?配列の配列をループする

var parentArray = [ 
[[1,2,3],[4,5,6],[7,8,9]], 
[[10,11,12],[13,14,15],[16,17,18]], 
[[19,20,21],[22,23,24],[26,27,28]] 
]; 

実際の配列の例は、任意の数の配列と配列を含むことができます。それらの数字をすべて印刷するには?あなたは再帰を使用する必要が次元の数が不明でアレイの場合

for(var i = 0; i < parentArray.length; i++){ 
    for(var j = 0; j < parentArray[i].length; j++){ 

     console.log(parentArray[i][j]); 
    } 
} 

:ここでのループのためにネストされたあなたが使用することになり

function printArray(arr){ 
    for(var i = 0; i < arr.length; i++){ 
     if(arr[i] instanceof Array){ 
      printArray(arr[i]); 
     }else{ 
      console.log(arr[i]); 
     } 
    } 
} 
+0

:http://stackoverflow.com/questions/4419537/enhanced-for-loop-in-2d-array-javascript –

答えて

15

この再帰関数は、任意の次元数でトリックを行う必要があります。

var printArray = function(arr) { 
    if (typeof(arr) == "object") { 
     for (var i = 0; i < arr.length; i++) { 
      printArray(arr[i]); 
     } 
    } 
    else document.write(arr); 
} 

printArray(parentArray); 
+1

lol、我々はすべて同じ名前の同じ機能を投稿しています。 –

+0

xDクレイジー:P .... –

+0

よく、その名前はあまりにも明白です:) –

6

オブジェクト。外側のループは親配列を反復し、毎回内部配列の1つを与えます。内側のループは各配列内の項目を提供します。 例:

for(childArray in parentArray){ 
    for(item in childArray){ 
     //do stuff here to each number 
    } 
} 
0

HTMLへの同様のは2つのdimenionalアレイ用のDOM

+0

あなたはin'のための 'との配列をループべきではありません。 – pimvdb

+0

私は同意する、それは最善の選択ではない。私はそれを使用しようとする前に読むことをお勧めします。http://blog.niftysnippets.org/2010/11/myths-and-realities-of-forin.html – yoozer8

1

あなたが構造のようなDOMを使用している場合は、再帰的要素を反復処理する必要があります。そのような何か作業をする必要があります:

function printArray(array) { 
    for (var i = 0; i < array.length; i++) { 
     var v = array[i]; 
     if (v instanceof Array) { 
      printArray(v); 
     } else { 
      console.log(v); 
     } 
    } 
} 
4

1つのオプションは、でdephtsの任意の数の作品再帰を使用することです。それはテストされていない、traverse()を参照してくださいしかし、大まかなアイデアを与える必要があります。

String.prototype.lpad = function(padString, length) { 
    var str = this; 
    while (str.length < length) 
     str = padString + str; 
    return str; 
} 

var level = 0; 

function traverse(obj) { 
    if (obj instanceof Array) { level++; for(var i in obj) traverse(obj[i]); level--; } 
    else console.log(''.lpad('-', level) + obj); 
} 
6

何をする必要が、そこ、だからこれは、ネストされたループのようになります。この

var parentArray = [ 
[[1,2,3],[4,5,6],[7,8,9]], 
[[10,11,12],[13,14,15],[16,17,18]], 
[[19,20,21],[22,23,24],[26,27,28]] 
]; 

for(int i = 0; i < parentArray.length;i++){ 
    var value = parent[i]; 

    for(int j = 0; j < parent[i].length; j++){ 
     var innerValue = parent[i][j]; 
    } 
} 

のようなものですがどこinnerValueし、あなたはいくつかの操作を行うことができます、それが助けてくれるといいですか?

4

すべてのメンバーを印刷したいのであれば、これはどうですか?

関連
var items = parentArray.toString().split(","); 
for(var i=0,j=items.length;i<j;i++) 
    console.log(items[i]);