Intl.Collator() コンストラクター

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.

Intl.Collator() コンストラクターは、言語を考慮した文字列の比較を可能にする Intl.Collator オブジェクトを生成します。

試してみましょう

console.log(["Z", "a", "z", "ä"].sort(new Intl.Collator("de").compare));
// Expected output: Array ["a", "ä", "z", "Z"]

console.log(["Z", "a", "z", "ä"].sort(new Intl.Collator("sv").compare));
// Expected output: Array ["a", "z", "Z", "ä"]

console.log(
  ["Z", "a", "z", "ä"].sort(
    new Intl.Collator("de", { caseFirst: "upper" }).compare,
  ),
);
// Expected output: Array ["a", "ä", "Z", "z"]

構文

js
new Intl.Collator();
new Intl.Collator(locales);
new Intl.Collator(locales, options);

引数

locales 省略可

任意。 BCP47 言語タグの文字列またはその配列。 locales 引数の一般的な形式や解釈については Intl のページを参照してください。

次の Unicode 拡張キーが使用可能です。

メモ: これらのキーは通常、 options でも設定することができます(下記でリストアップします)。両方が設定されている場合は、 options のプロパティが優先されます。

co

特定のロケールにおける比較方法の変化形を指定します。指定可能な値は次の通りです。

  • big5han
  • compat
  • dict
  • direct
  • ducet
  • eor
  • gb2312
  • phonebk (ドイツ語のみ対応)
  • phonetic
  • pinyin
  • reformed
  • searchjl
  • stroke
  • trad
  • unihan
  • zhuyin

    メモ: このオプションは options プロパティ "collation" からも設定できます。

kn

"1" < "2" < "10" のような数値照合順序を使用するかどうかを指定します。設定可能な値は "true" と "false" です。 このオプションは、 options の "numeric" プロパティでも設定することができます。

kf

大文字と小文字のどちらを先に並べるかを指定します。使用できる値は "upper", "lower", "false" (ロケールの既定値を使用)です。このオプションは、 options の "caseFirst" プロパティでも設定することができます。

options 省略可

任意。以下のプロパティの一部またはすべてを持つオブジェクトです。

localeMatcher

ロケールの照合に使用するアルゴリズム。指定可能な値は "lookup" と "best fit" で、既定値は "best fit" です。このオプションの詳細については Intl のページを参照してください。

usage

この比較がソートのためなのか、それとも一致する文字列を検索するためなのか。使用可能な値は "sort" および "search" で、既定値は "sort" です。

sensitivity

文字の違いをどの程度までを区別するかです。以下の値を指定可能です。

  • "base": ベース文字が異なれば、異なる文字であると評価します。 例: a ≠ b, a = á, a = A
  • "accent": ベース文字が異なるか、またはアクセントその他の発音区別符号が異なれば、異なる文字であると評価します。 例: a ≠ b, a ≠ á, a = A
  • "case": ベース文字が異なるか、ベース文字が同一でも大文字小文字が異なれば、異なる文字であると評価します。 例: a ≠ b, a = á, a ≠ A
  • "variant": ベース文字、アクセントその他の発音区別符号、および大文字小文字のいずれかが異なれば、異なる文字であると評価します。他の違いも考慮されるかもしれません。 例: a ≠ b, a ≠ á, a ≠ A

既定値は、 usage が "sort" の場合は "variant"、 "search" の場合はロケールに依存します。

ignorePunctuation

句読点を無視するかどうか。指定可能な値は true または false で、既定値は false です。

numeric

"1" < "2" < "10" のように数値として比較を行うかどうかです。可能な値は true および false です。既定値は false です。

メモ: このオプションは Unicode 拡張キーの kn でも設定することができます。両方が指定された場合は、この options のプロパティが優先されます。

caseFirst

大文字と小文字のどちらを先に並べるかです。指定可能な値は "upper", "lower", "false" (ロケールの既定の動作)です。大文字と小文字のどちらを先に並べるかは options のプロパティでも Unicode 拡張キーでも指定可能です。両方で指定された場合、 options プロパティの指定が優先されます。

メモ: このオプションは Unicode 拡張キーの kf でも設定することができます。両方が指定された場合は、この options のプロパティが優先されます。

collation

特定のロケールにおける比較方法の変化形を指定します。指定可能な値は次の通りです。

  • big5han
  • compat
  • dict
  • direct
  • ducet
  • eor
  • gb2312
  • phonebk (ドイツ語のみ対応)
  • phonetic
  • pinyin
  • reformed
  • searchjl
  • stroke
  • trad
  • unihan
  • zhuyin

    メモ: このオプションは Unicode 拡張キーの co でも設定することができます。両方が指定された場合は、この options のプロパティが優先されます。

Collator の使用

次の例では、文字列が別の文字列の前であるか、後であるか、または同じレベルで発生したのかの様々な可能性のある結果を示しています。

js
console.log(new Intl.Collator().compare("a", "c")); // → 負の値
console.log(new Intl.Collator().compare("c", "a")); // → 正の値
console.log(new Intl.Collator().compare("a", "a")); // → 0

上記のコードで示された結果は、ブラウザーやブラウザーのバージョンによって異なる可能性があることに注意してください。これは、値が実装固有のものであるためです。つまり、仕様では前後の値が負と正の値であることだけが要求されています。

仕様書

Specification
ECMAScript® 2026 Internationalization API Specification
# sec-the-intl-collator-constructor

ブラウザーの互換性

関連情報