【JSリファレンス】String.prototype.localeCompare()

更新日:2024/06/14

String.prototype.localeCompare()は、Stringオブジェクト(Stringコンストラクターのインスタンス)プロトタイプチェーンに組み込まれるメソッドです。

現在の文字列と引数で指定された文字列の出現順(並び順)での比較を行います。

 

■構文

String.prototype.localeCompare ( that [ , locales [ , options ] ] )
  1. that: 比較対象の文字列

    文字列以外の値の場合、文字列に変換される。
    ※Symbolは、TypeError

  2. locales: 省略可能。
    "en-US"や"ja"などの言語コード
    備考1:localesについて参照
  3. options: 省略可能。
    備考2:optionsについて参照

localesおよびoptionsを使用した比較は、String.prototype.localeCompare()内で生成したIntl.Collator() コンストラクターのインスタンス(ECMA-402 ECMAScript国際化API仕様)によって行われます。
そのため、Intl.Collator() コンストラクターを実装していない実行環境では使用できません。

出現順が、
現在の文字列 < 引数文字列 なら負の数
現在の文字列 = 引数文字列 なら0
現在の文字列 > 引数文字列 なら正の数

 

■使用例

const text = "山田太郎";

console.log( text.localeCompare("山田花子") ); // 1

■備考1: localesについて

"en-US"や"ja"などの言語コードの他に、bcp47/collation.xmlで定義されているキーのうち、3つを使用できます。

"u-key名-値" で指定します。
※引数optionsと同じ内容のキーは、optionsが優先されます。

  • key name="co": 照合タイプ

    値は上記リンク先参照

  • key name="kn": 数値文字列の扱い
    "true" 数値として比較する
    "false" 文字として比較する。規定値

    console.log( "3".localeCompare( "10"  ) );
      // 1 ← "3" > "10"
    
    console.log( "3".localeCompare( "10" , "ja-u-kn-true" ) );
      // -1 ← "3" < "10"
    
  • key name="kf": 大文字小文字の比較
    "upper" 大文字が先
    "lower" 小文字が先。
    "false" ロケールに従う。規定値

    console.log( "a".localeCompare( "A"  ) );  // -1
    console.log( "a".localeCompare( "A" , "ja-u-kf-upper" ) );  // 1
    
    console.log( "ぁ".localeCompare( "あ"  ) );  // -1
    console.log( "ぁ".localeCompare( "あ" , "ja-u-kf-upper" ) );  // 1
    

備考2: optionsについて

optionsは、次のプロパティと値を持つオブジェクトを指定します。

  • usage: 使用目的
    "sort" ソート目的。規定値
    "search" 検索目的。
  • localeMatcher: 指定されたロケールと内部で定義されているロケールとの照合アルゴリズム
    "lookup" BCP47のセクション3.4で定義されているアルゴリズムで照合

    "best fit" 実行環境依存のアルゴリズムで照合。規定値。

  • collation:

    bcp47/collation.xmlの"co"キーの値。
    引数localeと同じ値。

  • numeric: 数値文字列の扱い
    true 数値として比較する
    false 文字として比較する。規定値

    引数localesの、"kn"と同じ

  • caseFirst: 大文字小文字の順番

    "upper" 数値として比較する
    "lower" 文字として比較する。規定値
    "false" ロケールに従う。規定値

    引数localesの、"kf"と同じ

  • sensitivity: 大文字小文字、アクセントや発音記号の扱い

    基本文字が同じ大文字 (例:A) 小文字(例:a) アクセントや発音記号(例:à)の比較は、

    "base" 等しい
    "accent" 大文字と小文字の比較は等しい。
    "case" 大文字または小文字とアクセントや発音記号との比較は等しい
    "variant" すべて等しくない

  • ignorePunctuation: 句読点を無視するかどうか

    true 無視する
    false 無視しない。規定値

更新日:2024/06/14

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://jsref.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。