所以,我需要在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");
。我做错了什么人?
答案 0 :(得分:4)
变化
for (i = 0; roomWidth / tileWidth; i += 1) {
到
for (i = 0; i < roomWidth / tileWidth; i += 1) {
答案 1 :(得分:1)
您不需要在循环之前声明i
和j
。如果它们仅存在于循环中,那么它们作为局部变量会更好。此外,您可以组合循环。
另外,@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))