Заполнение двумерного массива в JavaScript с помощью цикла for - PullRequest
2 голосов
/ 04 февраля 2012

Итак, мне нужно заполнить двумерный массив в 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 ]

4 голосов
/ 04 февраля 2012

изменить

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

на

for (i = 0; i < roomWidth / tileWidth; i += 1) {
1 голос
/ 04 февраля 2012

Посмотрите на эту скрипку.

измени свой

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

до

for (i = 0; i < roomWidth / tileWidth; i += 1)
1 голос
/ 04 февраля 2012

Вам не нужно объявлять i и j перед циклами. Если их существование предназначено исключительно для циклов, они лучше в качестве локальных переменных. Также вы можете комбинировать петли.

Кроме того, то, что сказал @ Юрий Зубарев, верно. Средний оператор в for -loop - это условие, которое должно выполняться в цикле.

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");
0 голосов
/ 04 февраля 2012

Вы можете упростить свой код, используя небольшую вспомогательную функцию

// 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))    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...