【JavaScript】JavaScriptのStringオブジェクトのメソッドlocaleCompareが比較にとても便利!

こんにちは。野中やすおです。

今回の記事では、JavaScriptのStringオブジェクトのメソッドであるlocaleCompareの紹介を行います。localeCompareは複数の文字列を比較するのに結構便利です。

localeCompareとは

localeCompare はJavaScriptのStringオブジェクトのメソッドで、二つの文字列を地域に依存する方法で比較します。

localeCompareの基本的な使い方

 

上記の例を使用して、localeCompareの基本的な使い方を紹介します。

  • str1.localeCompare(str2)が -1を返す場合、str1はstr2よりも辞書順で前にくることを意味しています。
  • str2.localeCompare(str1)が 1を返す場合、str2はstr1よりも辞書順で後ろにくることを意味しています。
  • 同じ文字列を比較すると、0を返します。

地域とオプションを指定する

またlocaleCompareを使用することで、任意の地域やオプションを指定して、詳細な比較を行うことができます。

例えば、大文字と小文字の区別をしない比較や、アクセント記号の有無を無視する比較ができます。

上記の例では、”Äpfel” と “apfel” がドイツ語の地域設定で比較され、大文字と小文字の区別が無視されるため、これらの文字列は等しいとされます。

sortと組み合わせて使用する

localeCompareが普段使用するにあたって本領を発揮するのがsortメソッドと組み合わせて使用する場合だと思います。

例えば、localeCompare メソッドを使ってバージョン番号を比較する場合、オプションを設定して数字を昇順(または降順)で並べ替えることができます。

 

上記の例では、以下のことが行われます。

  1. versions配列にバージョン番号が文字列として格納されます。
  2. sortメソッドを使用して配列をソートします。そして、 localeCompare を使用し、そのオプションに numeric: true を指定します。文字列内の数字が数値として比較されてソートされます。
  3. 上記の結果でversions 配列はバージョン番号が昇順にソートされた状態で出力されます。通常の文字列比較では ‘1.10.0’ が ‘1.2.0’ より先に来てしまいますが、numeric オプションにより正しい順序でソートされます。

 

以上、localeCompareの紹介でした!いざという時に覚えておくと便利なJavaScriptのメソッドです。

参考

MDN Web Docs

The localeCompare() method of String values returns a number…