array [1] [2]是什么意思?

时间:2019-07-12 19:45:02

标签: javascript arrays

我正在阅读Mozilla的突破游戏教程,遇到了 一个奇怪的数组的东西。我到处搜寻,但什么也找不到。来自的代码: (https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_Breakout_game_pure_JavaScript/Build_the_brick_field

我尝试过W3Schools并在Mozilla教程中仔细阅读,但没有找到有关我的问题的任何信息。

var bricks = [];
for(var c=0; c<brickColumnCount; c++) {
    bricks[c] = [];
    for(var r=0; r<brickRowCount; r++) {
        bricks[c][r] = { x: 0, y: 0 };
/*Right above is what I don't get: bricks[c][r]*/
    }
}

4 个答案:

答案 0 :(得分:4)

语法array[n][m]允许您访问二维数组的元素。您可能熟悉访问数组的一个元素的想法:arr[0]将使您获得arr的第一个元素,并且该值可以是字符串,数字,布尔值等。该值也可以 本身就是一个数组。一旦有了该数组(由arr[0]表示),就可以通过执行arr[0][newIndex]来访问那个数组上的元素。请参见以下示例:

var arr = [
    "hello",
    "world",
    ["my", "new", "array"]
]

在此示例中,arr[0]给您“ hello”,而arr[1]给您“ world”。按照这种逻辑,arr[3]给您["my", "new", "array"]。现在,您可以访问此新数组上的元素:arr[3][0]给出“ my”,arr[3][1]给出“ new”,依此类推。

编辑:

要在函数中创建二维数组,请执行与添加数字或布尔值完全相同的操作-现在,只需将其制成数组即可!

function myFunction() {
    var myArray = ["one", "two"]
    myArray.push(["embedded", "array", "here"])
}

答案 1 :(得分:2)

在此示例中,存在一组大小为brickColumnCount的列,以及一组行大小为brickRowCount。

cr变量引用当前的列和行。因此,bricks[c][r]是对c列和r行处当前砖的引用。这是因为bricks是一个数组。数组中的每个项目都代表一列,因此您可以将当前列视为bricks[c]

当前列也是数组,但包含行数据。该数组中的每个项目都代表实际的砖块。因此,如果bricks[c]currentColumn,则bricks[c][r]currentColumn[r],代表当前砖块。

本质上,在此设计中,每一列都包含行数据。有一个列数组,其中每个列都包含一个行数据数组。

如果我们有3 x 3的积木组

ABC
DEF
GHI

并且c为1,而r为2(基于0的索引),那么我们将在示例中查看砖块F。

回到问题中显示的代码,然后他们遍历集合中的每个砖块,并将其初始化为对象{ x: 0, y: 0 },从理论上准备对其进行修改以表示某种标量仿真或数据(在链接的页面上查看,用于冲突检测)。

答案 2 :(得分:1)

[x]或方括号是一种访问列表的方式;在Javascript中,列表称为数组。

假设我们有一个由数字1,2和3组成的列表。在Javascript中,它的显示方式如下:

let list = [1,2,3]

现在,如果您想从该列表中获取值,则可以使用[x]表示法来实现。 Javascript将索引从零开始,因此请注意以下示例:

list[0] === 1;
list[1] === 2;
list[2] === 3;

这些列表不必只是整数。它们可以是Javascript允许的任何类型的数据类型,例如字符串,对象或函数。在您的情况下,如果我们要用另一个列表替换[0]索引,并且您希望能够访问该内部列表,则必须执行list [0] [x],其中x是您要访问的索引在内部列表中。

list = [1,2,3];

更改为

list = [['a','b'],2,3];

如果我们想获得'a',就必须这样做:

list[0][0] === 'a';

类似地,如果我们这样做的话,我们可以得到'b'

list[0][1] === 'b';

答案 3 :(得分:1)

JavaScript是一种非常灵活的语言。数组可以是数组的元素。但是在这种情况下,我会避免使用术语“二维”数组,因为数组的元素可能是不同类型的。看这个例子:

var arr = [1, "string", ["a", "b", "c", ["d", "e"]], {a: 1, b :2}]

arr[0][0] -> undefined
arr[1][0] -> "s"
arr[2][0] -> "a"
arr[3][0] -> undefined
arr[2][3] -> ["d", "e"]