JavaScript Intl.Collator: сортировать строки на русском языке

Категория: JavaScript · Язык: JavaScript · Обновлено:

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

Рабочий пример

JavaScript
const collator = new Intl.Collator('ru', { sensitivity: 'base', numeric: true });
const names = ['???? 10', '???? 2', '?????'];
console.log(names.toSorted(collator.compare).length); // 3

numeric:true воспринимает 2 как число и ставит перед 10. sensitivity:'base' сравнивает буквы без различения регистра и диакритики в рамках локали.

Частый вопрос

Чем это отличается от localeCompare?

localeCompare использует сопоставление локали для пары строк. Intl.Collator создаёт переиспользуемый comparator, что удобно при сортировке большого массива.