2017-02-18 82 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’.. –

相关问题