Javascript 我不懂数组语句
我正在关注Mozilla网站上的2D突破游戏教程。有一点代码我不懂Javascript 我不懂数组语句,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我正在关注Mozilla网站上的2D突破游戏教程。有一点代码我不懂 var brickRowCount = 3; var brickColumnCount = 5; var brickWidth = 75; var brickHeight = 20; var brickPadding = 10; var brickOffsetTop = 30; var brickOffsetLeft = 30; var bricks = []; for(c = 0; c < brickColumnCou
var brickRowCount = 3;
var brickColumnCount = 5;
var brickWidth = 75;
var brickHeight = 20;
var brickPadding = 10;
var brickOffsetTop = 30;
var brickOffsetLeft = 30;
var bricks = [];
for(c = 0; c < brickColumnCount; c++) {
bricks[c] = []; // <-- here
for(r = 0; r < brickRowCount; r++) {
bricks[c][r] = { x: 0, y: 0 }; // <-- here
}
}
我大体上理解代码的作用,但是,有几行代码不清楚它们到底是做什么的。根据该网站的说法,我们将把所有的砖块放在一个二维阵列中。它将包含砖块列c,砖块列c将包含砖块行r,砖块行r将包含一个对象,该对象包含在屏幕上绘制每个砖块的x和y位置
我把注释放在了我特别不理解的代码行旁边。有人能澄清一下这些说法的确切含义吗
谢谢bricks[c]是bricks数组中的一个数组
砖块[c][r]包含砖块的坐标
它创建数组块,然后在其中创建一个c数组,并使用r添加值
可以这样写,让你形象化:bricks[bricks[c][r]一些可能有用的评论
// create a new empty array, `[]`, in `bricks` at position `c`
bricks[c] = []
// create a new brick, {x:0,y:0}, in `bricks[c]` at position `r`
bricks[c][r] = { x: 0, y: 0 };
它表示在位置c,数组中的r包含两个字段:x和y。这两个字段的值均为0
语法{x:0,y:0}是一种简写,用于创建一个包含两个字段的对象,并同时为这些字段赋值。它创建了一个多维数组,或者以另一种方式称之为数组数组 数组的每个元素都是另一个数组,因此要访问它们,需要对每个维度使用多个[]。。和其他数组一样,它们也需要初始化 所以这里
bricks[c] = [];
它正在为数组的每个元素初始化一个数组
这里是在数组块[c]中的位置r中存储一个对象,这意味着数组块[c]中位置c中的元素也是一个数组
例如,如果在没有第二部分的情况下运行for循环:
var bricks = [];
for(c = 0; c < brickColumnCount; c++) {
bricks[c] = [];
}
将其视为一个矩阵,其中c是列,r是行,x是交叉点cr处的单元
数组必须初始化,这就是代码中显示的内容,数组矩阵的每个单元格都将被分配一个值,我猜这个值可能会随着游戏中发生的事件而改变,或者会被检查,或者两者都被检查。他们只是在初始化一个对象数组。这就是全部。[]是一个新的空白/空阵列。
var bricks = [];
for(c = 0; c < brickColumnCount; c++) {
bricks[c] = [];
}
[
[ { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 } ],
[ { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 } ],
...
]
c\r r0 r1 r2 .. rn
c0 x00 x01 x02 .. x0n
c1 x10 x11 x12 .. x1n
.. .. .. .. .. ..
cn xn0 xn1 xn2 .. xnn