怎么更好的理解js二维数组的定义方式

JavaScript023

怎么更好的理解js二维数组的定义方式,第1张

js 中没有真正的二维数组的概念。

只是模拟二维数组的样式而已。

arrNum[i] = []arrNum 是一个数组,再定义arrNum里所以的元素的值都空数组。

定义两层[]实现二维数组

如:

var arr2=[[1,2],[54,33]]

这里通过[]定义了二维数组.其中1,2,54,33是第二维中的数,第一维中包含的第二维分别是[1,2],[54,33]

var arr = [1, 2]

[1, 2] 是数组的“字面量”

相当于

var arr = new Array(1, 2)

还有 Object 和 RegExp 也有相应的字面量:

var obj = {"property" : "value"/*, etc.*/}

var reg = /^http:\/\/.+/ //匹配以http://开始的字符串

所谓的“二维数组”,是一个“成员是一维数组的数组”,比如:

var arr =

[

["arr[0][0]", "arr[0][1]"],

["arr[1][0]", "arr[1][1]"]

]

所以,你要定义的二维数组应该写成这样:

var imageholder =

[

[new Image(), new Image()]

]

或者

var imageholder = new Array()

imageholder[0] = new Array()

imageholder[0][0] = new Image()

imageholder[0][1] = new Image()

类似的,三维数组就像这样:

var arr =

[

[

["arr[0][0][0]","arr[0][0][1]","arr[0][0][2]"],

["arr[0][1][0]","arr[0][1][1]","arr[0][1][2]"],

["arr[0][2][0]","arr[0][2][1]","arr[0][2][2]"]

],

[

["arr[1][0][0]","arr[1][0][1]","arr[1][0][2]"],

["arr[1][1][0]","arr[1][1][1]","arr[1][1][2]"],

["arr[1][2][0]","arr[1][2][1]","arr[1][2][2]"]

],

[

["arr[2][0][0]","arr[2][0][1]","arr[2][0][2]"],

["arr[2][1][0]","arr[2][1][1]","arr[2][1][2]"],

["arr[2][2][0]","arr[2][2][1]","arr[2][2][2]"]

]

]

本来是一个一个敲的,但敲了几个就快晕了,就用下面的代码“生”出来了:

document.write("<pre>")

document.writeln("var arr =\n[")

for(var i=0i<3i++){

document.writeln(" [")

for(var j=0j<3j++){

document.write(" [")

for(var k=0k<3k++){

document.write('"' + ("arr" + i + j + k).replace(/(\d)/g,"[$1]") + ((k<2)?'",':'"'))

}

document.writeln(((j<2)?'],':']'))

}

document.writeln(((i<2)?' ],':' ]'))

}

document.writeln("]")

document.write("<pre>")