.localeCompare()
与えられた文字列と参照している文字列を比較して、順番が前なのか後なのか、それとも同じなのかを指し示す数値を返します。
locales
とoptions
引数でアプリケーションに並び順で使用する言語を特定させて、
関数の振る舞いをカスタマイズすることが可能です。
古い実装環境では、locales
とoptions
引数は無視され、
localeと並び順は実装依存になります。
文法
str.localeCompare(compareString [, locales [, options]])
ブラウザ互換性のセクションで、localesとoptions引数がサポートされるブラウザを確認してください。 また、機能状況を調べる「Example: Checking for support for locales and options arguments」も確認してみてください。
引数 | 説明 |
---|---|
compareString |
参照されている文字列(str )と比較する文字列を指定します。
|
locales |
BCP47言語タグの文字列、またはそれらの文字列の配列を指定します。 locales引数の一般的な形式と説明については、 Intlページを参照してください。 下記のUnicode拡張キーが使用可能です。 |
options |
下記のプロパティの一部または全てを含むオブジェクトを指定します。 デフォルトは、usageが"sort"であれば"variant"になり、 usageが"search"であればlocaleに依存します。 |
ignorePunctuation | 句読点を無視するか否かを指定します。 指定可能な値はtrueとfalseで、デフォルトはfalseになります。 |
numeric |
"1" < "2" < "10"のような数値の照合を使用するか否かを指定します。
指定可能な値はtrueとfalseで、デフォルトはfalseになります。
このオプションはoptions プロパティ、またはUnicode拡張キーを通して設定可能で、
両方提供された場合は、options が優先されます。
実装はこのプロパティのサポートが必須としないため、サポートされていないかもしれません。
|
caseFirst |
大文字と小文字、どちらが先に並ぶべきなのかを指定します。
指定可能な値は、"upper"、"lower"、または"false"(localeのデフォルトを使用)で、デフォルトは"false"です。
このオプションはoptions プロパティ、またはUnicode拡張キーを通して設定可能で、
両方提供された場合は、options が優先されます。
実装はこのプロパティのサポートが必須としないため、サポートされていないかもしれません。
|
参照している文字列が、与えられた文字列とソートした際に、
前に来るか後ろに来るか、または同じなのかを指し示す数値が返されます。
compareString
よりも前に文字列が来る場合は、負の数が返され、
後ろに来る場合は正の数が返され、同じであれば0が返されます。
例
localeCompareの使用例
下記の例のデモは、後、前、同じとなる、それぞれの異なる結果を示しています。
alert('a'.localeCompare('c')); // -2、または-1、もしくはその他の負の値
alert('c'.localeCompare('a')); // 2、または1、もしくはその他の正の値
alert('a'.localeCompare('a')); // 0
上記のコードの結果は、ブラウザ間やバージョンの違いによって異なる結果になる可能性があるので注意してください。 これは実装仕様によるためです。 仕様で必要となるものは、前後を表す値が負の数なのか正の数なのかだけです。(翻訳に自信なし)
例: localesとoptions引数がサポートされているか確認
locales
とoptions
引数はまだ全てのブラウザでサポートされていません。
これらのサポートが実装されているかを確認するには、
不正な言語タグを使用して、RangeError
例外で拒絶される必要があります。
function localeCompareSupportsLocales() {
try {
"a".localeCompare("b", "i");
} catch (e) {
return e.name === "RangeError";
}
return false;
}
localesの使用例
localeCompare
による結果は、言語間で異なります。
アプリケーション上で、ユーザーが使用しているユーザーインターフェース言語の並び順を取得するには、
locales
引数を使用して、その言語を特定します。(出来れば、フォールバック用の言語も)
// 負の数: ドイツでは、äがaより先に並べられます。
alert('ä'.localeCompare('z', 'de'));
// 正の数: スウェーデンでは、zの後ろにäが並びます。
alert('ä'.localeCompare('z', 'sv'));
optioinsの使用例
localeCompare
による結果は、options
引数を使用してカスタマイズすることが可能です。
// ドイツでは、äはベース文字としてaを持ちます。
alert('ä'.localeCompare('a', 'de', {sensitivity: "base"})); // 0
// スウェーデンでは、äとaのベース文字は区別されます。
alert('ä'.localeCompare('a', 'sv', {sensitivity: "base"})); // 正の数
パフォーマンス
大規模な配列の並び替えのような、文字列を大量に比較するような場合、 Intl.Collatorオブジェクトを作成し、 そのcompareプロパティによって提供される関数を使用するのが良いでしょう。
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ |
localesと options引数 |
24 | 29 (29) | 11 | 15 | × |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | ◯ | ◯ | ◯ | ◯ |
localesと options引数 |
× | 26 | × | × | × | × |
関連項目
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。