Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我不懂数组语句_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript 我不懂数组语句

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

我正在关注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 < 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