Код Senior Реализация с нуля обновлено

Конструктор компараторов

Условие

sortBy(rules): rules - массив вида [{ key, dir }] или [key]. Возвращает компаратор для sort: сравнение по ключам по очереди, строки через localeCompare, undefined и null всегда в конце независимо от направления.

Что проверяют тесты

  • по одному ключу

  • убывание

  • два ключа

  • строки по алфавиту, не по кодам

  • числа как числа

  • пустые в конце при любом направлении

Как подойти

Обобщение того, что в каждой таблице пишут заново. Главная деталь - пустые значения должны выпадать из логики направления: пользователю не нужны пустые строки в начале таблицы при сортировке по убыванию. localeCompare с локалью обязателен для кириллицы: сравнение по кодам ставит 'ё' после 'я'.

Подсказки: 3
  1. Компаратор перебирает правила, пока не найдёт ненулевое сравнение.
  2. Пустые значения обрабатываются до применения направления, иначе в убывании они всплывут наверх.
  3. Числа и строки сравниваются по-разному - определяй по типу.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.