通过减法或比较排序返回不同的值

时间:2017-01-12 10:53:01

标签: javascript

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

(a,b) => b > a

排序错了。 虽然排序函数是:

(a,b) => b - a

排序是正确的。

怎么可能?

的jsfiddle: https://jsfiddle.net/dh1j867f/

1 个答案:

答案 0 :(得分:3)

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