-4

我想知道为什么我们需要二维数组。我刚刚学会了它们,但我发现它对使用没有帮助。请回答!请感谢您的所有回答。

4

1 回答 1

4

JavaScript 没有二维数组,但它有一些非常相似的东西:数组的数组。我们需要二维数组或数组数组等的原因是我们使用它们来表示二维事物。例如,在国际象棋中,棋盘是二维的:它具有宽度和深度(或高度,取决于您如何看待它)。[x][y]因此,以一种让我们对其进行索引的方式来表示它是有意义的:

var board = [
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
];

这给了我一个空白的 8x8 棋盘。如果我想P在位置 6,2 放置一个白色棋子,我会这样做:

board[6][2] = 'P';

给我这个:

[
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', 'P', ' ', ' ', ' ', ' ', ' '],
    [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
]

这比在一维数组中跟踪事物并总是乘以板的宽度要容易得多。考虑一维替代方案:

var board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '];

如果我想穿上P6,2我必须这样做:

board[(6*8)+2] = 'P';

对于真正的二维数组,这主要是为了方便程序员。

但是对于数组的数组,它比这更有趣:外部数组内的数组可以是不同的长度,或者(对于大多数执行数组数组的语言)完全缺失:

var anArrayOfArrays = [
    [1, 2, 3, 4],
    [1, 2],
    null,
    [1, 2, 3, 4, 5, 6, 7, 8]
];

这可能非常方便——当然,不能用于表示棋盘。:-) 但用于表示不是盒形的东西。Arrays-of-arrays 可以完成二维数组的工作,但它们也可以完成其他有趣的工作。

当然,它并没有就此结束。如果我们想表示三维的东西,我们可以使用三维数组(或数组数组的数组)。星际迷航迷们可能会在这里再次使用国际象棋的例子。;-)

于 2014-07-19T14:36:34.620 回答