【问题标题】:Can anyone explain javascript sort() function? [duplicate]谁能解释javascript sort() 函数? [复制]
【发布时间】:2016-03-25 22:04:02
【问题描述】:

这里我尝试像这样对整数数组进行排序

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

使用 points.sort(); 但输出为 0,1,100,101,110,111,8,9。我真的对此感到困惑,而 8,9 是从哪里来的。

【问题讨论】:

标签: javascript arrays sorting


【解决方案1】:

8 来自 010,9 来自 011,因为它们被解释为八进制数

您需要删除前面的零

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

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

【讨论】:

  • +1 因为我没有注意到第二个问题
  • 那很好,你能解释一下上面例子中points.sort(function(a,b) { return a-b })在去掉前面的零之后的逐步执行吗?
【解决方案2】:

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

来自the MDN

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

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

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

编辑:@Daniel 指出了另一个问题,即您的数字文字没有像您认为的那样被解释,您应该删除不重要的零。

【讨论】:

  • 没错,但这不是问题所在。
  • @Cerbrus 其实问题解决了一半
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 2017-07-14
相关资源
最近更新 更多