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

它只是一个示例数组,实际可以包含任意数量的数组,然后是数组。如何打印所有这些数字?它类似于HTML对象DOM

+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

大声笑,我们都发布相同的名称相同的功能。 –

+0

xD crazy:P .... –

+0

好吧,这个名字太明显了:) –

6

对于2个dimenional阵列:

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

你会使用嵌套在这里循环。外层循环会迭代父数组,每次给你一个内部数组。内部循环会给你每个数组中的项目。 例子:

for(childArray in parentArray){ 
    for(item in childArray){ 
     //do stuff here to each number 
    } 
} 
+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

一种选择是使用递归与适用于任何数量的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]);