这里我尝试对整数数组进行排序,如
var points = [000, 100, 010, 101, 001, 011, 110, 111];
使用 points.sort();
,但输出为 0,1,100,101,110,111,8,9 。我真的很困惑,8,9来自哪里。
答案 0 :(得分:3)
8来自010,9是来自011,因为它们被解释为八进制数
您需要删除前面的零
然后你需要在sort()中使用比较函数:
points.sort(function(a,b) { return a-b })
答案 1 :(得分:1)
那是因为默认排序是基于字符串比较。
来自the MDN:
如果未提供compareFunction,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序
要对数字进行排序,请执行
points.sort(function(a,b) { return a-b })
编辑:@Daniel指出了另一个问题,即您的数字文字没有按您认为的那样解释,您应该删除不重要的零。