2017-04-07 18 views
0

这就是我所拥有的,我有一个三维数组,其中包含我的名字的变体。整个事情看起来像这样。现在使用多个循环访问多维数组中的所有元素。为什么这是未定义的?

var array = [['kenny', 'Kenney'],['ken','Ken'],['kenneth', 'Kenneth']]; 

,没有什么不妥的地方,从我可以告诉后来来了,我想做些什么。我只是试图利用for循环来一次循环所有这些元素,所有这些元素都显示出来。以下是我自己写下的内容。

for(var i = 0; i < array.length; i++) { 
    for(var j = 0; j < array.length[i]; j++) { 
     for(var k = 0; k < array.length[i][j]; k++) { 
      console.log(array[i][j][k]); 
     } 
    } 
}; 

返回的是未定义的。我究竟做错了什么?在此先感谢,伙计们。

+3

上述阵列是二维和你正在做的3-维访问。如果该示例被封装在'[[[...]]' –

+0

中,那么该代码就可以工作。您只需要为循环执行2步骤 –

回答

0

你把指标在错误的地方:

for(var i = 0; i < array.length; i++) { 
    for(var j = 0; j < array[i].length; j++) { 
     for(var k = 0; k < array[i][j].length; k++) { 
      console.log(array[i][j][k]); 
     } 
    } 
} 

最后一个循环是不需要的,因为这将通过在每个项目,印刷字一个字每一个元素的话。

+0

为什么3'for's? –

+0

只需复制粘贴OP代码,但是,只需要两个Fors – Lixus

1

您有2个问题在这里。首先,你试图深入3个“层次”,好像这是一个三维数组,但它只是二维的。

还需要做array[i].length代替array.length[i]

var array = [ 
 
    ['kenny', 'Kenney'], 
 
    ['ken', 'Ken'], 
 
    ['kenneth', 'Kenneth'] 
 
]; 
 

 
for (var i = 0; i < array.length; i++) { 
 
    for (var j = 0; j < array[i].length; j++) { 
 
    console.log(array[i][j]); 
 
    } 
 
};

0

所述第一阵列中的每个元素将被处理为一个数组。

var array = [['kenny', 'Kenney'],['ken','Ken'],['kenneth', 'Kenneth']]; 

for (var i=0; i<array.length; i++) { 
    for (var j=0; j < array[i].length; j++) { 
     console.log(array[i][j]); 
    } 
} 
0

使用forEach更清晰:

var array = [['kenny', 'Kenney'],['ken','Ken'],['kenneth', 'Kenneth']]; 
 

 
array.forEach(function(subarray) { 
 
    subarray.forEach(function(name) { 
 
    console.log(name); 
 
    }); 
 
});

相关问题