我遇到过编写一段代码,我想在这样的循环中引用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++;
}
}
我明白了这个错误。谢谢!
答案 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] + ' ')
}
}
完全没有数组“锯齿”并且在主阵列中包含不均匀大小的数组。
答案 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]);
}
}
}