我不理解数组语句

时间:2015-10-26 21:09:31

标签: 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 < brickColumnCount; c++) {
    bricks[c] = []; // <-- here
    for(r = 0; r < brickRowCount; r++) {
        bricks[c][r] = { x: 0, y: 0 }; // <-- here
    }
}

我一般都了解代码的作用,但是,有几行不清楚它们究竟是做什么的。根据该网站,&#34;我们将把所有砖块都放在一个二维阵列中。它将包含砖柱(c),而砖柱(c)又包含砖行(r),每行包含一个包含x和y位置的对象,用于在屏幕上绘制每个砖。&#34;

我在我特别不理解的代码行旁边添加了注释。有人可以确切地澄清这些陈述的含义吗?

谢谢

6 个答案:

答案 0 :(得分:3)

它正在创建一个多维数组,或者另一种调用它的方式,一个数组数组。

数组的每个元素都是另一个数组,因此要访问它们,您需要为每个维度使用多个RewriteEngine on RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 。就像任何其他数组一样,它们需要初始化。

所以这里

[]

它正在为数组bricks[c] = []; 的每个元素初始化一个数组

bricks

这里是将对象存储在数组bricks[c][r] = { x: 0, y: 0 }; 中的r位置(这意味着数组bricks[c]中位置c中的元素也是一个数组)< / p>

答案 1 :(得分:2)

一些可能有帮助的评论

simple_form

答案 2 :(得分:1)

animated:YES是砖块数组中的一个数组。

<%= form_for @company do |f| %> <%= f.fields_for :partners, Partner.all do |partner| %> ... <% end %> <% end %> 包含砖块的坐标。

它正在创建数组块,然后在其中创建一个bricks[c]数组并使用bricks[c][r]添加值。

可以这样写,以便您可视化:c

答案 3 :(得分:0)

它表示在数组中的(c,r)位置,literal object包含两个字段:xy。这两个字段都具有值0

语法{x: 0 ,y: 0}是创建包含两个字段的对象并同时为这些字段赋值的简写。

答案 4 :(得分:0)

bricks[c] = []将数组元素编号c设置为空数组。

E.g。如果你在没有第二部分的情况下运行for循环:

var bricks = [];
for(c = 0; c < brickColumnCount; c++) {
   bricks[c] = [];
}

bricks将为[ [ ], [ ], [ ], [ ], [ ] ]

如果您运行完整代码,bricks

[
  [ { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 } ],
  [ { x: 0, y: 0 }, { x: 0, y: 0 }, { x: 0, y: 0 } ],
  ...
]

答案 5 :(得分:0)

将其视为矩阵,其中c为列,r为行,x为交叉点cr

的单元格
c\r r0   r1   r2   ..  rn
c0  x00  x01  x02  ..  x0n
c1  x10  x11  x12  ..  x1n  
..  ..   ..   ..   ..  ..
cn  xn0  xn1  xn2  ..  xnn

必须初始化数组(即代码中显示的数组),数组(矩阵)的每个单元格都将分配一个值,并且可能(只是我的猜测)该值将通过发生的事件进行更改在比赛期间,或者他们将被检查或两者兼而有之。

相关问题