openlang

Обращение к целочисленной сетке

Любое обращение к pixelGrid через pixelGrid[#][#] останавливает работу кода. Я объявлял pixelGrid несколькими способами, но лучше не стало. Если присвоить значение 0 и показать его, всё работает, но присваивание pixelGrid[0][0], тоже равного 0, внезапно всё ломает в этом месте. Неважно, обращаюсь ли я к массиву в условии, для изменения значения или где-то ещё.


var pixelGrid;
for (let row = 0; row < 9; row++) {
    for (let column = 0; column < 9; column++) {
        pixelGrid[row][column] = 0;
    }
}
function redrawPixels() {
    // Shortened for simplicity
    ImageData.data[0] = 0; // Works fine.
    ImageData.data[0] = pixelGrid[0][0]; // Function stops, and ctx.putImageData no longer updates canvas.
}
Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Прежде чем использовать переменную как массив, нужно инициализировать её значением массива, например

    
    var pixelGrid = []; // <- add this
    for (let row = 0; row < 9; row++) {
        pixelGrid[row] = []; // <- and add this
        for (let column = 0; column < 9; column++) {
            pixelGrid[row][column] = 0;
        }
    }
    console.log(pixelGrid[0][0]);
    console.log(pixelGrid[0]);
    console.log(pixelGrid);

    Результат такой:

    0

    [0, 0, 0, 0, 0, 0, 0, 0, 0]

    [[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0]]

    Примечание: просмотр ошибок в консоли помогает обнаружить подобные проблемы.

    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Проблема в том, что вы объявили pixelGrid, но так и не инициализировали его двумерным массивом.

    Сейчас написано:

    
    var pixelGrid;

    То есть pixelGrid на самом деле: undefined

    Затем ломается эта строка:

    
    pixelGrid[row][column] = 0;

    поскольку JavaScript фактически пытается выполнить:

    
    undefined[row][column]

    Сначала инициализируйте массив:

    
    var pixelGrid = [];
    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как в Java Mail показывать текстовое имя отправителя вместо его настоящего адреса электронной почты

    Я отправляю сообщения через Java Mail API. После доставки во входящих отображается адрес отправителя. Хочу показывать вместо…

    Ответы 2Последняя активность java
  2. Доступ к Dynamics CRM из TypeScript

    Мой код CRM выполняется в веб-ресурсе, поэтому для получения данных сущности приходится писать чтобы обратиться к этим данным…

    Ответы 2Последняя активность typescript
  3. Какой формат даты нужен заголовку HTTP-ответа в Gleam?

    Я хочу отправлять заголовок Date. Требуемый формат выглядит следующим образом: Вот мой текущий вариант кода:

    Ответы 3Последняя активность gleam