sort排序不准问题是因为sort在做比较时会把数组中的元素转化为字符串去作比较,两个操作数都是字符串,则比较两个字符串第一个字母对应的ASCII码值,若拿 11 与 5 作比较,则5的ASCII码值大于1,即sort方法会认为11 < 5
举个例子:
var arr = [1,2,3,10,4,5,11,12,111];
var arrsort = arr.sort();
console.log(arrsort); // [1, 10, 11, 11, 111, 12, 2, 3, 4, 5]
解决办法:sort方法中可以写函数去获取数组中真实的值,直接去拿真实的数值去做判断可以解决一般的数值型判断。
var arrsort = arr.sort(compare);
function compare(val1,val2) {
if(val1 < val2) {
return -1;
} else if(val1 > val2) {
return 1;
} else {
return 0;
}
}
console.log(arrsort); // [1, 2, 3, 4, 5, 10, 11, 11, 12, 111]