Как я могу решить эту ошибку toString()?

Ошибка выдается toString() функция.

"error" "TypeError: Невозможно прочитать свойство 'toString' из неопределенного

Изображение ошибки

Вот код:

while(  items[i][j].toString().charCodeAt() < items[i][j-1].toString().charCodeAt()  )

  {
    var temp =items[i][j];

    items[i][j]=items[i][j-1];

    items[i][j-1]=temp ;

    j=j-1;

  }

2 ответа

Решение

Ошибка возникает потому, что, в конце концов, [j-1] собирается попробовать получить доступ к несуществующему индексу. Предполагая типичный массив, это произойдет, когда:

var j = 0;
console.log(items[i][j-1]); // undefined

console.log(items[i][-1]); // undefined

И, undefined значение не позволяет использовать методы.

Чтобы избежать этого, цикл также должен проверять, достиг ли он этого конца:

while ( j > 0 && items[i][j]... ) {
    // ...
    j=j-1;
}

Вы уверены, что переменная j никогда не равна 0?

Если у вас есть два круга, как:

var arr = [[1,2,3], 
           [4,5,6],
           [7,8,9]];

for (var i = 0; i < arr.length; ++i) {
  for (var j = 0; j < arr[i].length; ++j) {
    arr[i][j - 1].toString() // error
  }
}

У вас есть ошибка, потому что в первый раз j равен -1, то есть "undefined", undefined не имеет метода toString()

Установите начальное значение для j = 1 во втором круге, и вы решите эту ошибку.

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