Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. String
  6. String.prototype.localeCompare()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

String.prototype.localeCompare()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

МетодlocaleCompare()строковых значений возвращает число, указывающее, где должна находиться эта строка при сортировке (до, после или в том же самом месте, что и строка, переданная в качестве параметра). В реализациях с поддержкойIntl.Collator API этот метод просто вызываетIntl.Collator.

При сравнении большого количества строк, например при сортировке больших массивов, лучше создать объектIntl.Collator и использовать предоставляемый им методcompare().

Интерактивный пример

const a = "réservé"; // With accents, lowercaseconst b = "RESERVE"; // No accents, uppercaseconsole.log(a.localeCompare(b));// Expected output: 1console.log(a.localeCompare(b, "en", { sensitivity: "base" }));// Expected output: 0

Синтаксис

js
localeCompare(compareString)localeCompare(compareString, locales)localeCompare(compareString, locales, options)

Параметры

Параметрыlocales иoptionsПараметрыlocales иoptions изменяют поведение функции и позволяют приложениям определять язык, правила форматирования которого, следует использовать.

В реализациях, поддерживающихIntl.Collator API, эти параметры соответствуют параметрам конструктораIntl.Collator(). Реализации без поддержкиIntl.Collator должны игнорировать оба параметра, возвращаемый результат сравнения полностью зависит от реализации.

compareString

Строка, с которой сравниваетсяreferenceStr. Все значенияприводятся к строкам, поэтому отсутствие значения или значениеundefined приводит к тому, чтоlocaleCompare() будет сравнивать со строкой"undefined", а это скорее всего не то, что вы ожидаете.

localesНеобязательный

Строка с языковым тегом BCP 47 или массив таких строк. Соответствует параметруlocales конструктораIntl.Collator().

В реализациях без поддержкиIntl.Collator этот параметр игнорируется и обычно используется локаль устройства.

optionsНеобязательный

Объект определяющий выходной формат. Соответствует параметруoptions конструктораIntl.Collator().

В реализациях без поддержкиIntl.Collator этот параметр игнорируется.

Смотрите описаниеконструктораIntl.Collator() для подробностей использования параметровlocales иoptions.

Возвращаемое значение

Отрицательное число еслиreferenceStr встречается передcompareString;положительное еслиreferenceStr встречается послеcompareString;0 если они одинаковы.

В реализациях с поддержкойIntl.Collator результат эквивалентен результату вызоваnew Intl.Collator(locales, options).compare(referenceStr, compareString).

Описание

Возвращает число, указывающее, расположена лиreferenceStr до, после или в том же самом месте, что иcompareString.

  • Отрицательное число, когдаreferenceStr встречается передcompareString,
  • Положительное число, когдаreferenceStr встречается послеcompareString,
  • Возвращает0 если строки одинаковы.

Предупреждение:Не полагайтесь на точные значения-1 и1!

Отрицательные и положительные ответы отличаются в зависимости от браузера (и версии браузера), потому что спецификация ECMAScript определяет только то, что числа должны быть положительными и отрицательными. Некоторые браузеры могут возвращать-2 или2 или другие значения.

Примеры

ИспользованиеlocaleCompare()

js
// Буква "а" идёт перед "в", поэтому результат будет отрицательным"а".localeCompare("в"); // -2 или -1 (или другое отрицательное число)// В алфавитном порядке слово "первый" идёт после "второй", поэтому результат будет положительным"первый".localeCompare("второй"); // 2 или 1 (или другое положительное число)// "а" и "а" одинаковы, поэтому результат будет равен нулю"а".localeCompare("а"); // 0

Сортировка массива

localeCompare() даёт возможность регистронезависимой сортировки массивов.

js
const items = ["réservé", "Premier", "Cliché", "communiqué", "café", "Adieu"];items.sort((a, b) => a.localeCompare(b, "fr", { ignorePunctuation: true }));// ['Adieu', 'café', 'Cliché', 'communiqué', 'Premier', 'réservé']

Проверка поддержки параметровlocales иoptions

Параметрыlocales иoptions поддерживаются ещё не всеми браузерами.

Чтобы проверить их поддержку реализацией, используйте аргумент"i" (требование, чтобы недопустимые языковые метки отклонялись) и исключениеRangeError:

js
function localeCompareSupportsLocales() {  try {    "foo".localeCompare("bar", "i");  } catch (e) {    return e.name === "RangeError";  }  return false;}

Использование параметраlocales

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

js
console.log("ä".localeCompare("z", "de")); // отрицательное значение: в немецком буква ä идёт рядом с буквой aconsole.log("ä".localeCompare("z", "sv")); // положительное значение: в шведском буква ä следует после буквы z

Использование параметраoptions

Результат, предоставляемыйlocaleCompare(), может быть настроен с помощью параметраoptions:

js
// В немецком буква a является базовой для буквы äconsole.log("ä".localeCompare("a", "de", { sensitivity: "base" })); // 0// В шведском буквы ä и a являются двумя разными базовыми буквамиconsole.log("ä".localeCompare("a", "sv", { sensitivity: "base" })); // положительное значение

Сортировка чисел

js
// По умолчанию, "2" > "10"console.log("2".localeCompare("10")); // 1// Сортировка чисел с использованием настроек:console.log("2".localeCompare("10", undefined, { numeric: true })); // -1// Сортировка чисел с использованием языковых меток:console.log("2".localeCompare("10", "en-u-kn-true")); // -1

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

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.localecompare
ECMAScript® 2026 Internationalization API Specification
# sup-String.prototype.localeCompare

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

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

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp