Результат
У этой страницы вообще нет серверной части. Вставленная таблица разбирается кодом JavaScript внутри вашего же браузера, график рисуется на элементе canvas на вашей машине, файл экспорта собирается локально. Ничего не загружается, не хранится и не пишется ни в какие логи. После загрузки страницы можно отключить сеть — всё продолжит работать, и это самый простой способ проверить обещание самостоятельно.
Факты и границы применимости
| Направление | По убыванию, Я→А (для обычного А→Я есть отдельная сортировка строк) |
|---|---|
| Сравнение | По кодовым точкам Unicode по умолчанию, либо locale-зависимый natural-порядок при включённой опции |
| Регистр | По умолчанию не учитывается: «яблоко» и «Яблоко» считаются равными |
| Пустые строки | Сортируются вместе с остальными — обычно оказываются в самом низу |
| Не то же самое, что | Простой разворот порядка ввода — для этого есть утилита разворота порядка списка |
| Устойчивость | Равные строки (после приведения регистра) сохраняют исходный порядок друг относительно друга |
Когда этот метод вводит в заблуждение
- Это сортировка по алфавиту, а не по порядку набора — уже отсортированный А→Я список превратится здесь в Я→А, но список в случайном порядке будет полностью перестроен, а не просто перевёрнут. Если нужно лишь зеркально отразить порядок ввода, используйте утилиту разворота порядка списка.
- Без natural-сортировки «10» в этом обратном порядке окажется после «2» по неверной причине: посимвольно «1» меньше «2», поэтому при убывании «2» оказывается выше «10». Включите natural-сортировку для корректного убывающего числового порядка (10, 9, 8… 2, 1).
- Регистронезависимое сравнение сворачивает буквы только для самого сравнения — в результате исходный регистр каждой строки сохраняется без изменений.
- Сортировка не зависит от локали (обычный порядок кодовых точек), пока не включена natural-сортировка — тогда используется locale-зависимое сравнение браузера, и буквы с диакритикой могут упорядочиться не так, как ожидается.
Как это считается
Текст разбивается на строки, затем прогоняется через Array.sort с компаратором, который инвертирует обычный результат — то, что обычно шло бы первым, теперь идёт последним.
При включённом регистронезависимом сравнении обе сравниваемые строки приводятся к нижнему регистру перед сравнением, поэтому видимый регистр роли не играет — важны только буквы и их последовательность, читаемая в обратном порядке.
Natural-сортировка сравнивает через localeCompare в числовом режиме и затем инвертирует результат, поэтому последовательности цифр воспринимаются как целые числа и упорядочиваются от большего к меньшему, а не посимвольно.
Результат — отсортированный массив, снова склеенный переносами строк: сколько строк на входе, столько и на выходе, просто переставленных от Я до А вместо А до Я.
Вопросы и ответы
Это то же самое, что перевернуть список сверху вниз?
Нет. Эта утилита пересортировывает по алфавиту, поэтому результат зависит только от букв в каждой строке, а не от порядка, в котором вы их набрали. Чтобы просто перевернуть порядок набора, используйте разворот порядка списка.
Сортируются строки или слова?
Строки. Каждая строка входного текста — один элемент для сортировки. Для сортировки отдельных слов используйте утилиту сортировки слов по алфавиту.
Почему «10» оказывается после «2» без natural-сортировки?
Потому что сравнение идёт посимвольно: «1» меньше «2», поэтому при убывании «2» оказывается выше «10». Включите natural-сортировку для настоящего убывающего числового порядка.
Как получить обычный порядок А→Я?
Используйте утилиту сортировки строк — та же логика, но по возрастанию, со своими настройками регистра и natural-сортировки (плюс опциональное удаление дубликатов).
Мой список куда-то отправляется?
Нет. Сортировка целиком выполняется в вашем браузере, ничего не отправляется на сервер.