--- title: Intl.Collator slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator tags: - Collator - Internationalization - JavaScript translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator ---
{{JSRef("Global_Objects", "Collator", "Intl,DateTimeFormat,NumberFormat")}}

Сводка

Объект Intl.Collator является конструктором сортировщиков — объектов, включающих языка-зависимое сравнение строк.

Синтаксис

new Intl.Collator([locales[, options]])
Intl.Collator.call(this[, locales[, options]])

Параметры

locales

Необязательный параметр. Строка с языковой меткой BCP 47, либо массив таких строк. Описание общей формы и интерпретации аргумента locales смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_identification_and_negotiation", 1)}}. Разрешены следующие ключи расширения Unicode:

co
Варианты сортировки для конкретных локалей. Возможные значения включают в себя: "big5han", "dict", "direct", "ducet", "gb2312", "phonebk", "phonetic", "pinyin", "reformed", "searchjl", "stroke", "trad" и "unihan". Значения "standard" и "search" игнорируются; они заменяются свойством usage аргумента options (смотрите ниже).
kn
Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются "true" и "false". Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет.
kf
Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются "upper", "lower" и "false" (используется значение по умолчанию из локали). Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет.
options

Необязательный параметр. Объект с некоторыми или всеми из следующих свойств:

localeMatcher
Используемый алгоритм сопоставления локалей. Возможными значениями являются "lookup" и "best fit"; значением по умолчанию является "best fit". Информацию по этой опции смотрите на {{jsxref("Global_Objects/Intl", "странице, посвящённой объекту Intl", "#Locale_negotiation", 1)}}.
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.

Значением по умолчанию является "variant" при использовании свойства usage, равного "sort", и зависит от локали при использовании свойства usage, равного "search".

ignore­Punctua­tion
Определяет, должна ли игнорироваться пунктуация. Возможными значениями являются true и false; значением по умолчанию является false.
numeric
Определяет, должно ли использоваться числовое сравнение, то есть, чтобы выполнялось условие "1" < "2" < "10". Возможными значениями являются true и false; значением по умолчанию является false. Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет. Реализации не обязаны поддерживать это свойство.
caseFirst
Определяет, буквы какого регистра должны идти первыми — верхнего или нижнего. Возможными значениями являются "upper", "lower" и "false" (используется значение по умолчанию из локали); значением по умолчанию является "false". Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет. Реализации не обязаны поддерживать это свойство.

Описание

Свойства

{{jsxref("Collator.prototype", "Intl.Collator.prototype")}}
Позволяет добавлять свойства ко всем объектам.

Методы

{{jsxref("Collator.supportedLocalesOf", "Intl.Collator.supportedLocalesOf()")}}
Возвращает массив, содержащий те из предоставленных локалей, которые поддерживаются без отката к локали по умолчанию среды выполнения.

Экземпляры объекта Collator

Свойства

Экземпляры Collator наследуют следующие свойства из своего прототипа:

{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Properties')}}

Методы

Экземпляры Collator наследуют следующие методы из своего прототипа:

{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Collator/prototype', 'Methods')}}

Примеры

Пример: использование Collator

Следующий пример демонстрирует различные потенциальные результаты для строки, находящейся до, после или на том же самом уровне, что и другая строка:

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

Обратите внимание, что результат, показанный в коде выше, может сильно различаться в зависимости от браузера и его версии. Происходит это потому, что возвращаемые значения зависят от реализации. То есть, спецификация требует только чтобы при следовании строки до значение было отрицательным, а после — положительным.

Пример: использование аргумента locales

Результаты, предоставляемые функцией {{jsxref("Collator.prototype.compare()")}} сильно различаются в зависимости от языка. Для получения порядка сортировки языка, используемого в пользовательском интерфейсе вашего приложения, убедитесь, что вы указали этот язык (и, возможно, несколько запасных языков) через аргумент locales:

// В немецком буква ä идёт рядом с буквой a
console.log(new Intl.Collator('de').compare('ä', 'z'));
// → отрицательное значение

// В шведском буква ä следует после буквы z
console.log(new Intl.Collator('sv').compare('ä', 'z'));
// → положительное значение

Пример: использование аргумента options

Результат, предоставляемый функцией {{jsxref("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'));
// → положительное значение

Спецификации

Спецификация Статус Комментарии
{{SpecName('ES Int 1.0', '#sec-10.1', 'Intl.Collator')}} {{Spec2('ES Int 1.0')}} Изначальное определение.

Совместимость с браузерами

{{Compat}}

Смотрите также

{{page('/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl', 'See_also')}}