Код Middle Реализация с нуля обновлено
Натуральная сортировка
Условие
Отсортируй строки вида «букваЧисло» сначала по букве, потом по числу как по числу: ['A100','A3','Z100','Z2'] → ['A3','A100','Z2','Z100'].
Примеры
naturalSort(["A100", "A3", "Z100", "Z2"]) // ["A3", "A100", "Z2", "Z100"]
naturalSort(["B1", "A9"]) // ["A9", "B1"]
naturalSort([]) // []
Как подойти
Проблема лексикографического сравнения чисел в строках: '10' < '3', потому что '1' < '3'. Разбор на части и числовое сравнение решает это. В общем случае, когда чисел в строке несколько, применяют Intl.Collator с опцией numeric: true - одна строка вместо разбора, назови её.
Подсказки: 2
- Обычная сортировка сравнивает строки посимвольно: 'A100' окажется раньше 'A3'.
- Разбери каждую строку на букву и число, дальше два компаратора через ||.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.