--- title: Intl.Collator slug: Web/JavaScript/Reference/Global_Objects/Intl/Collator tags: - Collator - Internationalization - JavaScript translation_of: Web/JavaScript/Reference/Global_Objects/Intl/Collator ---
Объект 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"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".
ignorePunctuationtrue и false; значением по умолчанию является false.numerictrue и false; значением по умолчанию является false. Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет. Реализации не обязаны поддерживать это свойство.caseFirst"upper", "lower" и "false" (используется значение по умолчанию из локали); значением по умолчанию является "false". Эта опция может быть установлена через свойство аргумента options, либо через ключ расширения Unicode; если предоставлены оба значения, свойство аргумента options имеет приоритет. Реализации не обязаны поддерживать это свойство.CollatorЭкземпляры Collator наследуют следующие свойства из своего прототипа:
Экземпляры Collator наследуют следующие методы из своего прототипа:
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}}