我对javascript' sort()函数
有疑问var arr = [23,43,54,2,3,12];
arr.sort();
它的输出是[12, 2, 23, 3, 43, 54]
它应该是[2, 3, 12, 23, 43, 54]
?
答案 0 :(得分:2)
这是因为您使用默认排序算法对数字进行排序,该算法将它们转换为字符串并按字典顺序排序。
而是通过返回值传递定义排序顺序的函数。
var arr = [23,43,54,2,3,12];
console.log(arr.sort((a, b) => a - b));
返回正数会将a
移到列表的末尾。
答案 1 :(得分:2)
您必须指定排序功能
[12, 2, 23, 3, 43, 54].sort(function (a, b) { return a - b ; } )
javascript规范声明sort应该执行lexicografic排序,docs
答案 2 :(得分:1)
数字的排序基于Unicode。 因此,你所拥有的是正确的。 有关详细信息,请参阅链接。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort