JavaScript Intl.Collator: сортировать строки на русском языке
Обычная сортировка строк сравнивает кодовые единицы и может дать неожиданный порядок для русского текста. Intl.Collator учитывает правила локали и позволяет настроить регистр и числовые фрагменты.
Рабочий пример
const collator = new Intl.Collator('ru', { sensitivity: 'base', numeric: true });
const names = ['???? 10', '???? 2', '?????'];
console.log(names.toSorted(collator.compare).length); // 3numeric:true воспринимает 2 как число и ставит перед 10. sensitivity:'base' сравнивает буквы без различения регистра и диакритики в рамках локали.
Частый вопрос
Чем это отличается от localeCompare?
localeCompare использует сопоставление локали для пары строк. Intl.Collator создаёт переиспользуемый comparator, что удобно при сортировке большого массива.