→
その String と文字列 compareString とを、並べ替え順において前後関係を数値で返します。
新しい locales と options 引数によってアプリケーションはソート順で使われる言語を指定し関数の振る舞いをカスタマイズできます。古い実装では、locales 引数と options 引数は無視されます。使用されるローケルとソート順は完全に実装依存しています。
referenceStr | String。 |
---|---|
compareString | referenceStr と比較される文字列。 |
locales、options | これらの引数は関数の振る舞いをカスタマイズし、使用されるべきフォーマット規約の言語をアプリケーションに決めさせます。
引数 locales 、 options を無視する実装においては、使用されるロケールと返却される文字列の書式は完全に実装依存となります。 これらのパラメーターの詳細及び使用方法については Intl.Collator() コンストラクター を見てください。 |
Number。文字コード的に¶、referenceStr が compareString より前に出現する場合は負数、referenceStr が compareString より後に出現する場合は正数、等しい場合は 0 。
referenceStr が compareString より辞書順で先に来るか、後に来るか、あるいは等しいかを示す整数を返します。
戻り値が厳密に -1 や 1 であると考えないように
負数と正数が結果としてどんな数値になるかはブラウザー間(及びブラウザーのバージョン間)で異なります。これは W3C の仕様が負の値か正の値かとだけ指定しているためです。ブラウザーによっては -2 や 2 を、あるいはまた別の負の値、正の値を返却するかもしれません。
巨大な配列のソートなど大量の文字列を比較する場合は Intl.Collator オブジェクトを作成し、compare プロパティで提供される関数を利用すると良いでしょう。
// 文字 "a" は "c" は負数になります D='a'.localeCompare('c'); //=-1。-2 や -1、あるいはまた別の負数。 // 単語 "check" はアルファベット順に "against" より後ろなので正数になります。 D='check'.localeCompare('against'); //=1。2 や -1、あるいはまた別の正数。 // "a" と"a" は等しいので自然数 0 になります。 D='a'.localeCompare('a'); //=0
localeCompare() は case-insensitive な配列のソートを行います。
let items = ['réservé', 'Premier', 'Cliché', 'communiqué', 'café', 'Adieu']; D=items.sort( (a, b) => a.localeCompare(b, 'fr', {ignorePunctuation: true})); //=['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']
引数 locales と options はすべてのプラウザでまだサポートされていません。
実装がこれらをサポートしているか調べるため引数 "i" (不正な言語タグが除外される要件)を利用し、例外 RangeError を調べます。
function localeCompareSupportsLocales() { try { 'a'.localeCompare('b', 'i'); } catch (e) { return e.name === 'RangeError'; } return false; }
¶
localeCompare()によって得られる結果は言語間で違います。アプリケーションのユーザインターフェイスで使用される言語のソート順を得るために、locales 引数を使用してその言語(そしておそらくいくつかのフォールバック言語)を指定していることを確かめて下さい:
D='ä'.localeCompare('z', 'de'); //=-1。負数: ドイツ語で ä は a に分類される。 D='ä'.localeCompare('z', 'sv'); //=1。正数: スウェーデン語では ä は z の後になる
localeCompare()によって得られる結果はoptions引数を使用することによってカスタマイズできます:
// ドイツ語では ä の base letter は a D='ä'.localeCompare('a', 'de', { sensitivity: 'base' }); //=0 // スウェーデン語では ä と a は異なる base letters D='ä'.localeCompare('a', 'sv', { sensitivity: 'base' }); //=1。正の値。
// デフォルトでは "2" > "10" D="2".localeCompare("10"); //=1 // オプションを使った数字 D="2".localeCompare("10", undefined, {numeric: true}); //=-1 // ロケールタグを使った数字 D="2".localeCompare("10", "en-u-kn-true"); //=-1