使用for循环在JavaScript中填充二维数组

时间:2012-02-04 00:23:56

标签: javascript arrays for-loop

所以,我需要在JavaScript中填充二维数组,我是按照以下方式进行的:

var i = 0, j = 0;
for (i = 0; i < roomWidth / tileWidth; i += 1) {
     roomBuffer[i] = [];
}
for (i = 0; roomWidth / tileWidth; i += 1) {
     for (j = 0; j < roomHeight / tileHeight; j += 1) {
          roomBuffer[i][j] = 1;
     }
}
alert("Hello world");

问题在于它不仅不起作用,而且在它之后出现任何代码,它不会被执行。在这种情况下alert("Hello world");。我做错了什么人?

4 个答案:

答案 0 :(得分:4)

变化

for (i = 0; roomWidth / tileWidth; i += 1) {

for (i = 0; i < roomWidth / tileWidth; i += 1) {

答案 1 :(得分:1)

您不需要在循环之前声明ij。如果它们仅存在于循环中,那么它们作为局部变量会更好。此外,您可以组合循环。

另外,@Yuriy Zubarev说的是对的。 for - 循环中的中间语句是一个必须在整个循环中保持为真的条件。

for (var i = 0; i < roomWidth / tileWidth; i++) {
     roomBuffer[i] = [];
     for (var j = 0; j < roomHeight / tileHeight; j++) {
          roomBuffer[i][j] = 1;
     }
}
alert("Hello world");

答案 2 :(得分:1)

看看this小提琴。

改变你的

for (i = 0; roomWidth / tileWidth; i += 1)

for (i = 0; i < roomWidth / tileWidth; i += 1)

答案 3 :(得分:0)

您可以使用小辅助函数

来简化代码
// create an array of length len filled with value
fill = function(len, value) {
    for (var a = []; len-- > 0; a.push(value));
    return a;
}

您的代码:

size = roomWidth / tileWidth
roomBuffer = fill(size, fill(size, 1))