数字数组排序错误

Array of numbers sort is wrong

本文关键字:错误 数组排序 数字      更新时间:2023-09-26

今天我发现了一些关于数组原型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].排序功能有什么问题?

var numbers = [1,7,23,11,50,60];
alert(numbers.sort())

sort()将对所有成员调用toString(),因此它们被转换为字符串,并且您得到错误的排序顺序。

您必须手动传递比较器。

function comparator(x,y) {
    return x - y;
}
numbers.sort(comparator);
如果你想

按整数排序,就这样做。正常排序的比较函数将整数转换为字符串,然后比较它们。

function sortNumber(a,b) {
   return a - b;
}
var numArray = [1,7,23,11,50,60];
numArray.sort(sortNumber);

输出

[1, 7, 11, 23, 50, 60]