我有以下排序功能,它尝试根据项目是否以在文本框中输入的值开头来对项目进行排序。
items.sort(function(a, b) {
var aStart = a.name.match(new RegExp('^' + textEntered, 'i')) || [];
var bStart = b.name.match(new RegExp('^' + textEntered, 'i')) || [];
if (aStart.length != bStart.length) {
return bStart.length - aStart.length;
}
else {
return b.name - a.name; // error because these aren't numbers
}
return 0;
});
这适用于我尝试过的每个浏览器,除了IE6,它返回一个错误,指出它预期一个数字。
我尝试从本文中实现建议的修复,建议“不要在数组排序函数中重用参数变量。”:http://www.zachleat.com/web/array-sort包含以下内容:
items.sort(function(a1, b1) {
var a, b;
a = a1;
b = b1;
var aStart = a.name.match(new RegExp('^' + textEntered, 'i')) || [];
var bStart = b.name.match(new RegExp('^' + textEntered, 'i')) || [];
if (aStart.length != bStart.length) {
return bStart.length - aStart.length;
}
else {
return b.name - a.name;
}
return 0;
});
但它没有任何效果。以前有人不得不处理这件事吗?这个问题最好的解决办法是什么?