Сортировка, дедупликация и смешивание списков
Вставьте, перетащите или примите список и постройте поверх него рецепт: сортировка, удаление дубликатов, фильтрация, перенумерация, смешивание со вторым списком. Каждый шаг остаётся редактируемым, ничего не выполняется, пока вы это не добавите, и список никогда не покидает браузер.
Пока нет операций
Ваш список нетронут. Выберите операцию выше, и она появится здесь: её можно переставить, настроить или выключить.
Как это работает
Принесите список
Вставьте его, перетащите .txt или .csv на страницу либо примите из другого инструмента. Он только загружается — к нему пока ничего не применяется.
Складывайте операции
Каждая выбранная операция добавляется в рецепт, а не переписывает результат: её можно переставить, позже изменить настройки или выключить, чтобы увидеть, что она давала.
Настройте и измерьте
Каждый шаг показывает, сколько элементов он убрал или переписал, так что «удалить дубликаты» — это проверяемое число, а не догадка.
Забирайте результат
Скопируйте, скачайте, оформите как список IN для SQL или массив JSON, либо отправьте прямо в другой инструмент набора.
Рецепт, а не правка без возврата
Результат выводится из вашего списка плюс упорядоченного набора шагов. Ничего не переписывается, поэтому передумать насчёт второго шага стоит одного клика, а не начала с нуля.
Сортировка, уважающая ваш язык
Сравнение идёт через единственный Intl.Collator, созданный для языка страницы, с натуральным порядком чисел и необязательным сведением регистра и диакритики — вместо нового коллатора на каждое сравнение.
Два списка, пять способов их смешать
Оставьте то, что есть в обоих, только то, что в A, то, чего не разделяет ни один, объединение, или чередуйте их элемент за элементом — со сведением регистра и пробелов, когда нужно.
Розыгрыши, которые можно отстоять
Перемешивание и выбор используют криптографический генератор браузера, поэтому розыгрыш непредсказуем. Задайте зерно — и любой, кто его знает, повторит ровно тот же розыгрыш.
Большие списки не тормозят
После двадцати тысяч элементов цепочка уходит в фоновый поток, а после четырёхсот тысяч символов ждёт вашего нажатия «Выполнить», а не гадает.
Уходит в нужной форме
Один клик превращает результат в CSV в кавычках, массив JSON, конструкцию IN для SQL, массив JavaScript, список Markdown или элементы списка HTML — либо задайте обрамление сами.
Быстро из-за устройства, а не из-за малого размера
Сортировка создаёт один Intl.Collator и переиспользует его на весь проход. Простой сортировке А-Я это даёт немного — браузеры и так кешируют коллатор по умолчанию, — но именно это делает доступными полезные настройки: на 60 000 строк натуральный числовой порядок со сведением диакритики занимает около 0,7 с через переиспользуемый коллатор и порядка 9 с, если эти настройки передавать в localeCompare при каждом сравнении, то есть примерно в четырнадцать раз медленнее. Кроме того, всё, что больше двадцати тысяч элементов, уходит в Web Worker, поэтому страница продолжает прокручиваться во время работы, а история отмены хранит ваши шаги, а не копии текста.
Приватно, потому что отправлять некуда
Нет сервера, нет загрузки, нет аналитики по вашему содержимому и ни одного стороннего скрипта в обработке. Ваш список живёт в памяти вкладки и больше нигде; закрыть вкладку — это и есть кнопка удаления.
Сделано под списки, которые у людей есть на самом деле
Результат выводится из вашего списка плюс рецепта, поэтому ничто из сделанного не является дверью в одну сторону. Выключите шаг, чтобы точно увидеть его вклад, перетащите его выше, поменяйте разделитель нумерации, добавленной десять операций назад, или отмените последние тридцать правок. Набор текста в поле ввода больше не выбрасывает вашу работу.
Вставьте любой список и сложите нужные операции: сортировка по алфавиту, по числам или по длине, удаление или выделение дубликатов, отбрасывание пустых элементов, обрезка пробелов, смена регистра, фильтр по тексту или regex, перенумерация, добавление префиксов, случайный выбор победителей или смешивание со вторым списком. Каждый шаг — карточка, которую можно переставить, настроить или выключить.
Частые вопросы
QМожно ли складывать несколько операций?+
В этом и вся идея. Каждая выбранная операция становится карточкой рецепта, который выполняется сверху вниз. Карточки можно переставлять, менять их настройки позже, выключать одну, чтобы увидеть, что она делала, или удалять — и результат каждый раз заново выводится из вашего исходного списка. Ничего не переписывается.
QПравка ввода уничтожает мои операции?+
Нет. Список и рецепт разделены: измените список, и тот же рецепт снова отработает по новому тексту. Это была единственная настоящая ловушка предыдущей версии инструмента, где ввод одного символа сбрасывал результат.
QПочему сортировка ставит item10 перед item2?+
Потому что простой алфавитный порядок сравнивает «1» и «2» посимвольно. Переключите карточку сортировки на 1-9, и она возьмёт натуральный порядок чисел: item2 окажется перед item10. Вариант «длина» сортирует по длине элемента, а Аа сводит регистр и диакритику.
QКак сравнить два списка?+
Добавьте операцию «Смешать со списком B», и появится второе поле. Она может оставить только элементы, встречающиеся в обоих списках, только те, что в A, только те, которых не разделяет ни один, объединение обоих, или чередовать их. Сведение регистра и пробелов — это переключатели, так что «Аня » и «аня» могут считаться одной записью.
QДостаточно ли честно перемешивание для розыгрыша?+
Да. Это перемешивание Фишера–Йетса поверх криптографического источника случайности браузера с выборкой с отклонением, поэтому все порядки равновероятны — в отличие от привычного Math.random. Если вы хотите иметь возможность доказать розыгрыш, введите зерно: объявите его заранее, и любой сможет повторить ровно тот же результат.
QНасколько большой список он выдержит?+
Файлы до 8 МБ, это примерно полмиллиона обычных строк. После двадцати тысяч элементов работа уходит в фоновый поток, а после четырёхсот тысяч символов инструмент перестаёт выполняться сам и ждёт нажатия «Выполнить», так что вставка чего-то огромного никогда не подвешивает вкладку.
QМожно ли поправить что-то вручную?+
Нажмите «Править вручную», и поле результата станет редактируемым, а рецепт встанет на паузу. У ручных правок свои уровни отмены, а «Вернуться к рецепту» возвращает к выводимому результату. Можно работать так с самого начала и вообще не добавлять ни одной операции.
QМой список куда-нибудь отправляется?+
Нет. Каждая операция — это обычный JavaScript в вашей вкладке: сервер не участвует, и ни один запрос не уносит ваше содержимое. После загрузки страницы инструмент работает и без сети.