JavaScriptのビルトイン関数である sort()
や toSorted()
で数値をソートするときは注意が必要です。
以下の例を見てください。
[12, 11, 10, 9, 8].toSorted()
-> [10, 11, 12, 8, 9]
[8, 9, 10, 11, 12]
となるのが期待されますが、そうなっていません。
sort()
や toSorted()
関数の第1引数には比較関数を渡すことができますが、省略された場合、値はすべて文字列に変換されて比較されるためです。
省略した場合、配列の要素は文字列に変換され、各文字の Unicode コードポイント値に従って並べ替えられます。
数値としてソートするためには下記のように比較関数を明示的に渡す必要があります。
[12, 11, 10, 9, 8].toSorted((a, b) => a - b)
-> [8, 9, 10, 11, 12]
JavaScriptのビルトイン関数で数値をソートするときはご注意ください。
コメントを送る
コメントはブログオーナーのみ閲覧できます