2017-02-18 16 views
-3

Ошибка произведена функцией toString().Как я могу решить эту ошибку toString()?

"error" "TypeError: Cannot read property 'toString' of undefined

Image of error

Вот код:

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; 

    } 
+0

Что ошибка? – Caleb

+0

Вам нужно показать нам все соответствующие коды. –

+0

Вы ничего не передаете '.charCodeAt()'. Что вы ожидаете от этого? – Pointy

ответ

0

Ошибка возникает, потому что в итоге [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; 
} 
0

Вы уверены, что переменная 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 в первый раз, т.е. «не определено», метод не определен не ToString()

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

+0

Спасибо .. это работает .. –

 Смежные вопросы

  • Нет связанных вопросов^_^