Intl.Collator
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2017年9月以降、すべてのブラウザーで利用可能です。
Intl.Collator オブジェクトで、言語を考慮した文字列の比較ができます。
試してみましょう
console.log(["Z", "a", "z", "ä"].sort(new Intl.Collator("de").compare));
// 予想される結果: Array ["a", "ä", "z", "Z"]
console.log(["Z", "a", "z", "ä"].sort(new Intl.Collator("sv").compare));
// 予想される結果: Array ["a", "z", "Z", "ä"]
console.log(
["Z", "a", "z", "ä"].sort(
new Intl.Collator("de", { caseFirst: "upper" }).compare,
),
);
// 予想される結果: Array ["a", "ä", "Z", "z"]
コンストラクター
Intl.Collator()-
新しい
Collatorオブジェクトを生成します。
静的メソッド
Intl.Collator.supportedLocalesOf()-
指定されたロケールのうち、実行環境のデフォルトのロケールで代替されることなく対応するものを、配列に収めて返します。
インスタンスプロパティ
これらのプロパティは Intl.Collator.prototype で定義されており、すべての Intl.Collator インスタンスで共有されます。
Intl.Collator.prototype.constructor-
このインスタンスオブジェクトを作成したコンストラクター関数です。
Intl.Collatorのインスタンスの場合、初期値はIntl.Collatorコンストラクターとなります。 Intl.Collator.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]プロパティの初期値は、文字列"Intl.Collator"です。このプロパティはObject.prototype.toString()で使用されます。
インスタンスメソッド
Intl.Collator.prototype.compare()-
この
Intl.Collatorオブジェクトのソート順に応じて 2 つの文字列を比較するゲッター関数です。 Intl.Collator.prototype.resolvedOptions()-
オブジェクトの初期化時に計算されたロケールや照合オプションを反映したプロパティを持つ、新しいオブジェクトを返します。
例
>Collator の使用
次の例では、一方の文字列が他方の文字列より前である場合、後である場合、および同じレベルである場合の比較結果を表示します。
console.log(new Intl.Collator().compare("a", "c")); // -1 またはその他の負の値
console.log(new Intl.Collator().compare("c", "a")); // 1 またはその他の正の値
console.log(new Intl.Collator().compare("a", "a")); // 0
上記コードの結果は、ブラウザーやブラウザーのバージョンによって異なる可能性がある点に注意してください。というのも前および後を表す数値については、それぞれ負の数および正の数であることだけが仕様によって定めています。具体的な数値は定められていないため、実装ごとに異なる数値になるかもしれません。
locales の使用
Intl/Collator/compare の結果は言語によって異なります。アプリケーションのユーザーインターフェイスで使用される言語のソート順を取得するには、 locales 引数にその言語を(およびフォールバック用の言語も)指定してください。
// in German, ä sorts with a
console.log(new Intl.Collator("de").compare("ä", "z"));
// -1 またはその他の負の値
// in Swedish, ä sorts after z
console.log(new Intl.Collator("sv").compare("ä", "z"));
// 1 またはその他の正の値
options の使用
Intl.Collator.prototype.compare() の結果は options 引数でカスタマイズできます。
// ドイツ語では、ä は a をベース文字として持つ
console.log(new Intl.Collator("de", { sensitivity: "base" }).compare("ä", "a"));
// 0
// スウェーデン語では、ä と a は別な文字
console.log(new Intl.Collator("sv", { sensitivity: "base" }).compare("ä", "a"));
// 1 またはその他の正の値
仕様書
| 仕様書 |
|---|
| ECMAScript® 2027 Internationalization API Specification> # collator-objects> |