任何人都可以解释javascript sort()函数吗?

时间:2014-05-06 08:24:09

标签: javascript arrays sorting

这里我尝试对整数数组进行排序,如

var points = [000, 100, 010, 101, 001, 011, 110, 111];

使用 points.sort(); ,但输出为 0,1,100,101,110,111,8,9 。我真的很困惑,8,9来自哪里。

2 个答案:

答案 0 :(得分:3)

8来自010,9是来自0​​11,因为它们被解释为八进制数

您需要删除前面的零

然后你需要在sort()中使用比较函数:

points.sort(function(a,b) { return a-b })

答案 1 :(得分:1)

那是因为默认排序是基于字符串比较。

来自the MDN

  

如果未提供compareFunction,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序

要对数字进行排序,请执行

points.sort(function(a,b) { return a-b })
编辑:@Daniel指出了另一个问题,即您的数字文字没有按您认为的那样解释,您应该删除不重要的零。