負数を昇順にソートしたら順番がおかしい – JavaScript

配列の要素をソートするにはsort()メソッドを使用します。

デフォルト(引数指定なし)のソート順は「昇順」で「要素を文字列に変換して」並び替えを行います。

文字列で比較するので、例えば負数の入った数値配列の場合には以下のような結果になります。

JS

console.log( [1,2,-3,0,-2].sort() )   // [-2, -3, 0, 1, 2]

文字列としては “-2” < “-3” なので正しい結果です。

ですが数値としては-3, -2と並べたいので、引数に比較関数を指定して

JS

console.log( [1,2,-3,0,-2].sort( (a,b) => a-b ) ) // [-3, -2, 0, 1, 2]

のようにすれば正しい並びにソートすることができます。

sort()のデフォルトが「文字列比較」ということを気を付けておかないと、意図しない並びになってしまうことに注意が必要です。

Related Posts