我正在阅读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]*/
}
}
答案 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。
c
和r
变量引用当前的列和行。因此,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"]