通过循环变量引用Javascript数组元素

时间:2014-11-21 22:53:19

标签: javascript arrays

我遇到过编写一段代码,我想在这样的循环中引用2D数组d2_arr [] []。

for (var i=0; i<d2_arr[i].length; i++) {
    //do something
}

Google Script编译器抛出错误“无法从undefined中读取长度属性”。当我改变[i]为[1]时,它工作得很好。谁能解释为什么这是错的?还有一个相关的问题:2D数组可以连续使用不同数量的元素吗?理论上。一个例子是:

[[1,2],[3,4,5],[6,7,8,9],[10,11]]

EDIT。完整的代码部分。

var ids = []; 
 var j = 0; 
  for (var i=0; i<d2_arr[i].length; i++){
   if (d2_arr[i][2]<=0.05){
     ids[j]=d2_arr[i][0];
     j++;
   }
 }
我明白了这个错误。谢谢!

2 个答案:

答案 0 :(得分:3)

您通常需要嵌套的for循环来遍历二维数组

    var d2_arr = [[1,2],[3,4,5],[6,7,8,9],[10,11]]
    
    for (var i=0; i<d2_arr.length; i++){
      for (var j=0; j<d2_arr[i].length; j++){
        console.log(d2_arr[i][j] + ' ')
      }
    }

完全没有数组“锯齿”并且在主阵列中包含不均匀大小的数组。

这是一个小提琴http://jsfiddle.net/7Lr4542s/

答案 1 :(得分:1)

JS中的数组可以是任何大小和任何类型。您可以在数组中组合数字和字符串。

var twoDArray = [[1], ["one", "two"], ["i", "ii", "iii"]];
    for(var i = 0; i < twoDArray.length; i++) {
        for(var j = 0; j < twoDArray[i].length; j++) {
            print(twoDArray[i][j]);
        }
    }

    var threeDArray = [[["1.1.1", "1.1.2"], ["1.2.1", "1.2.2"]], [["1.2.1", "1.2.2"], ["1.2.1", "1.2.2"]], [["2.1.1", "2.1.2"], ["2.2.1", "2.2.2"]], [["2.2.1", "2.2.2"], ["2.2.1", "2.2.2"]]];
    for(var i = 0; i < threeDArray.length; i++) {
        for(var j = 0; j < threeDArray[i].length; j++) {
            for(var k = 0; k < threeDArray[i][j].length; k++) {
                print(twoDArray[i][j][k]);
            }
        }
    }