2017-01-12 5 views
1

長い数値の文字列を並べ替えることで奇妙な問題に取り組んでいます。ソート機能がある場合 :差し引きで比較するか比較すると異なる値が返されます

(a,b) => b > a 

ソートは間違っています。 ソート機能が次の場合:

(a,b) => b - a 

ソートが正しいです。

どうすれば可能ですか?

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

+0

私はDummyと同じことを言うつもりでしたが、Firefoxでフィドルを試したとき、よくしかし、減算方法だけが意味をなさない。 – RemcoGerlich

答えて

3

Array.prototype.sort()機能は、あなたがそれに渡す関数の引数が数値を返すことを期待するからです。この数値が負の値の場合、aは、bよりも小さいので、bの前に来ます。の場合、aはbに等しく、それ以外の場合はbより大きくなります。 (a,b) => b > aが正しくない場合は、numberの代わりにbooleanを返します。そのような減算を使用して並べ替えを使用すると、予期しない結果になるオーバーフローが発生する場合があります。

+0

驚くほど簡単で素早い答えです。ありがとうございました! –

関連する問題