循环遍历数组

cou*_*011 15 javascript arrays loops

我有一个数组数组(有些像图形),如何迭代所有数组?

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]]
];
Run Code Online (Sandbox Code Playgroud)

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

Sas*_*ley 17

这个递归函数应该可以使用任意数量的维度:

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);
Run Code Online (Sandbox Code Playgroud)


Van*_*ing 10

对于2维的阵列:

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

        console.log(parentArray[i][j]);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于具有未知维数的数组,您必须使用递归:

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


Sha*_*Wyk 7

你需要做的就是这样

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];
   }
}
Run Code Online (Sandbox Code Playgroud)

所以这就像一个嵌套循环,然后在那里你可以做一些innerValue和值的操作,希望它有所帮助


Sau*_*aul 5

一种选择是使用适用于任意数量深度的递归。请参阅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);
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果你只是想打印所有成员,这个怎么样?

var items = parentArray.toString().split(",");
for(var i=0,j=items.length;i<j;i++)
    console.log(items[i]);
Run Code Online (Sandbox Code Playgroud)


Ani*_*l_M 5

使用array.forEach方法

parentArray.forEach( function(childArray) {
  childArray.forEach(function(item){
  console.log(item);
  });
 });

[ 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 ]
Run Code Online (Sandbox Code Playgroud)

在 ES6+ 中使用=>“胖箭头”的一行代码

parentArray.forEach(subarray => { subarray.forEach( item => {console.log(item); }); });


[ 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 ]
Run Code Online (Sandbox Code Playgroud)

如果要列出item中的单个数字,请再添加一层forEach。