Intl.Collator であいうえお順ができるっぽいが
(※ 以下、検証結果は Google Chrome 81.0.4044.138 のもの)
Intl.Collator を使うと言語を考慮した文字列/数値の並び替えができる。
たとえば、文字列をあいうえお順で並べたいときに、普通の Array.prototype.sortで行うのは困難だが……(下を参照)
code:js
Intl.Collator を使うとスッとできる( ヒ・ビ・ピ は全部同一に扱い、ア→イ→ウ の順になっているように見える )
code:js
ところで、en-US でも同様にちゃんとア→イ→ウ の順になる。
code:js
これはなぜか。
ところで ↑ の MDN の「引数」を見ると sensitivity というのがある。
"variant": ベース文字、アクセントその他の発音区別符号、および大文字小文字のいずれかが異なれば、異なる文字であると評価します。他の違いも考慮されるかもしれません。
デフォルトは、usageプロパティが"sort"の場合は "variant"、 "search"の場合はローケル依存です。
sort ではデフォルトで variant によって文字の同一性を比較するとある。
「"search"の場合はローケル依存」とあるので、おそらく variant ではロケール依存ではないのだろう。
en-US と ja-JP で挙動が変わらないのはこれで説明がつく。
一方、日本語のひらがなは variant 比較でどう扱われるのか、ECMAScript の仕様書を見ているがわからない。
a ≠ A なら ヒ ≠ ピ になりそうなので、じゃぁ上の挙動はどう説明されるのか。
「その他の発音区別符号」に「゜」や「゛」は含まれていない?
variant: Strings that differ in base letters, accents and other diacritic marks, or case compare as unequal. Other differences may also be taken into consideration. Examples: a ≠ b, a ≠ á, a ≠ A.