Конструктор компараторов
Условие
sortBy(rules): rules - массив вида [{ key, dir }] или [key]. Возвращает компаратор для sort: сравнение по ключам по очереди, строки через localeCompare, undefined и null всегда в конце независимо от направления.
Что проверяют тесты
по одному ключу
убывание
два ключа
строки по алфавиту, не по кодам
числа как числа
пустые в конце при любом направлении
Как подойти
Обобщение того, что в каждой таблице пишут заново. Главная деталь - пустые значения должны выпадать из логики направления: пользователю не нужны пустые строки в начале таблицы при сортировке по убыванию. localeCompare с локалью обязателен для кириллицы: сравнение по кодам ставит 'ё' после 'я'.
Подсказки: 3
- Компаратор перебирает правила, пока не найдёт ненулевое сравнение.
- Пустые значения обрабатываются до применения направления, иначе в убывании они всплывут наверх.
- Числа и строки сравниваются по-разному - определяй по типу.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.