【问题标题】:Sorting by substraction or compare returns different values按减法或比较排序返回不同的值
【发布时间】:2017-01-12 19:01:02
【问题描述】:

我解决了一个奇怪的问题,处理对长数字字符串进行排序。 如果排序函数是:

(a,b) => b > a

排序错误。 虽然如果排序函数是:

(a,b) => b - a

排序正确。

这怎么可能?

JSFiddle: https://jsfiddle.net/dh1j867f/

【问题讨论】:

  • 我打算和 Dummy 说同样的话,但是当我在 Firefox 中尝试你的小提琴时,这两个选项实际上都同样有效。但只有减法才有意义。

标签: javascript


【解决方案1】:

这是因为Array.prototype.sort() 函数期望您传递给它的函数参数返回一个数字。如果这个数,a小于b,所以a在b之前,如果是0,a等于b,否则a大于b表示 a 将放在 b 之后。您的(a,b) => b > a 不正确,它返回boolean 而不是number。使用减法进行排序时需要注意的一个警告是溢出,这会给您带来意想不到的结果

【讨论】:

  • 非常简单、快速的答案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多