Javascript数组排序功能未正确排序

时间:2017-09-11 18:00:56

标签: javascript arrays

我对javascript' sort()函数

有疑问
var arr = [23,43,54,2,3,12];
arr.sort();

它的输出是[12, 2, 23, 3, 43, 54] 它应该是[2, 3, 12, 23, 43, 54]

3 个答案:

答案 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