2011-08-18 9 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]] 
]; 

실제 예제에는 배열이 포함될 수 있으며 배열이 포함될 수 있습니다. 이 번호를 모두 인쇄하는 방법은 무엇입니까?

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

: 당신은 구조와 같은 DOM이있는 경우

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

객체 . 외부 루프는 부모 배열을 반복하여 매번 내부 배열 중 하나를 제공합니다. 내부 루프는 각 배열 내의 항목을 제공합니다. 예 :이 재귀 함수는 차원의 수와 트릭을 할해야

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

는 당신이 여기에 루프를 중첩 사용합니다 : 당신은 재귀를 사용할 수있는 크기의 알 수없는 수의 배열의

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

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

: HTML에 그와 유사한 2 개 dimenional 배열 DOM

+0

당신이해야 in'에 대한'와 배열 이상하지 루프. – pimvdb

+0

동의합니다. 최선의 선택이 아닙니다. 나는 그것을 사용하기 전에 읽기를 권합니다. http://blog.niftysnippets.org/2010/11/myths-and-realities-of-forin.html – yoozer8

1

, 당신은 재귀 적 요소를 반복해야합니다. 뭐 그런 작업을해야합니다 :

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

하나의 옵션은 와 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]);