错误由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;
}
答案 0 :(得分: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,即“undefined”,undefined没有toString()方法
在第二个圆圈中设置j = 1的起始值并解决此错误。
答案 1 :(得分: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;
}