Иногда не добавляет элемент в массив

есть такой код:

if (fields[k][c].getAttribute("data-isOpened") !== "opened") {
    console.log("!opened");
    if (fields[k][c].getAttribute("data-nearBombAmount") === "0") {
        console.log("bomb0");
        needToCheck.push([]);
        needToCheck[indexN].push(k);
        needToCheck[indexN++].push(c);
        console.log(needToCheck[indexN-1]);
    }
    proper.push([]);
    proper[indexP].push(k);
    proper[indexP++].push(c);
    console.log(proper[indexP-1]);
}

в консоль выводит !opened -> bomb0 но в массив не добавляет элемент то есть все if проходят как true, но в массив не добавляет, что видно при выводе в консоль! при том только в некоторых случаях, не всегда почему так может быть?

видно, что 3 раза прошла проверка, но только 2 раза запушился элемент


Ответы (2 шт):

Автор решения: Qwertiy

Скорее всего индекс находится за пределами массива.

  1. Проверь, что в консоли включено отображение ошибок.
  2. Включи автоматическую остановку на ошибках.
  3. Включи автоматическую остановку на пойманных ошибках.
  4. Проидись по шагам в отладчике.

скриншот

→ Ссылка
Автор решения: Tina Gordienko_Drog

В общем нужно было не переменную использовать для хранения индекса (indexN, indexP), а писать length - 1:

needToCheck[needToCheck.length - 1].push(k);
→ Ссылка