为什么我们需要在Javascript中使用2D数组?

时间:2014-07-19 14:29:28

标签: javascript arrays dimensional

我想知道为什么我们需要二维数组。我刚刚学会了它们,但我发现它没有用处。请回答!请欣赏你的所有答案。

1 个答案:

答案 0 :(得分:4)

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

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

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

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]
];

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

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