JavaScript で大文字と小文字が混ざった文字列の配列をいい感じにソートする
Published Feb 28, 2025
⋅
Updated Mar 15, 2025
JavaScript で大文字と小文字が混ざった文字列の配列をソートするために、 sort()
を使った場合、次のような結果になる。
['apple', 'Banana', 'Apple', 'banana'].sort()
// Array(4) [ "Apple", "Banana", "apple", "banana" ]
デフォルトのソートでは、 UTF-16 code unit の値をもとに並び替えられるため大文字が先に来てしまう。
慣習的には、 [ "apple", "Apple", "banana", "Banana" ]
のように、同じ内容の文字列を小文字 → 大文字の順で並び替えたい。
このようなケースでは sort()
の比較関数に localeCompare()
を使う。これにより言語慣習に基づく順番で並び替えることができる。
['apple', 'Banana', 'Apple', 'banana'].sort((a, b) => a.localeCompare(b));
// Array(4) [ "apple", "Apple", "banana", "Banana" ]
参考