我想知道为什么我们需要二维数组。我刚学会它们,但我觉得用起来没什么用。请回答!谢谢你的回答。
JavaScript没有二维数组,但它有一些非常相似的东西:数组的数组。我们需要二维数组或数组的数组之类的原因是我们用它们来表示二维的东西。例如,在《国际象棋》中,游戏棋盘是二维的:它有宽度和深度(或高度,取决于你怎么想)。所以用一种可以对它进行[x][y]
索引的方式来表示它是有意义的:
var board = [
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
];
这给了我一个空白的8x8棋盘。如果我想用P
换白兵(6,2)我会这样做
board[6][2] = 'P';
给我这个:
[
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', 'P', ' ', ' ', ' ', ' ', ' '],
[' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
]
这比在一维数组中跟踪事物并总是乘以板的宽度要容易得多。考虑一维的替代方案:
var board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '];
如果我想把P
放在6,2
上,我必须这样做:
board[(6*8)+2] = 'P';
对于真正的二维数组,这主要是为了方便程序员。
但是对于数组的数组,它比这更有趣:外部数组中的数组可以是不同长度的,或者(对于大多数使用数组的语言)完全缺失:
var anArrayOfArrays = [
[1, 2, 3, 4],
[1, 2],
null,
[1, 2, 3, 4, 5, 6, 7, 8]
];
这非常方便 —当然,不是为了代表棋盘。:)但是对于代表不是盒子形状的东西。数组的数组可以做二维数组的工作,但它们也可以做其他有趣的工作。
当然,它并没有到此结束。如果我们想要表示三个维的东西,我们可以使用三维数组(或者数组的数组的数组)。《星际迷航》的粉丝可能会再次使用象棋的例子。: -)