Как я могу решить эту ошибку 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 во втором круге, и вы решите эту ошибку.