今天我发现了有关数组原型sort
的一些有趣内容。
var numbers = [1,7,23,11,50,60];
所以我创建了一个数字数组,并希望对它们进行排序。所以我用了
console.log(numbers.sort()) //-> [1, 11, 23, 50, 60, 7]
结果很奇怪,[1, 11, 23, 50, 60, 7]
。 sort函数有什么问题?
var numbers = [1,7,23,11,50,60];
alert(numbers.sort())

答案 0 :(得分:2)
sort()
将在所有成员上调用toString()
,因此它们会转换为字符串,并且您的排序顺序错误。
您必须手动传递比较器。
function comparator(x,y) {
return x - y;
}
numbers.sort(comparator);
答案 1 :(得分:1)
如果你想按整数排序,就这样做吧。普通排序的比较函数将整数转换为字符串,然后比较它们。
function sortNumber(a,b) {
return a - b;
}
var numArray = [1,7,23,11,50,60];
numArray.sort(sortNumber);
输出
[1, 7, 11, 23, 50, 60]