JavaScript で数値をソートするときの注意

JavaScript 界隈では常識だと思うんですが、知らなかったので覚書。
配列のソート行う Array.prototype.sort() 関数は、

compareFunction (比較関数) が与えられなかった場合、要素はそれぞれの文字列に変換したものを比較して辞書 (あるいは電話帳。数的でない) 順にソートされます。例えば、"80" は辞書順では "9" の前に来ますが、数的なソートでは 9 が 80 の前に来ます 。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

と、いうような実装になっています。
なので、例えば数値の配列をソートする場合、

const data = [3, 10, 1, 20, 22, 2, 15]
console.log(data.sort());
// => [ 1, 10, 15, 2, 20, 22, 3 ]

のように『文字列として』ソートされた結果になります。

もし、どうしても数値としてソートしたい場合は

// 比較関数は a > b ならプラス値、a < b ならマイナス値を返す
data.sort((a, b) => a - b)
// => [ 1, 2, 3, 10, 15, 20, 22 ]

のように比較関数を指定することで回避することは出来ます。