2017-02-18 108 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

確定,殲變量總是不等於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

謝謝..它的作品的特性‘的toString’.. –

相關問題