Код Middle Реализация с нуля обновлено
Разбор и сборка query-строки
Условие
parseQuery('?a=1&b=x&b=y&c') → { a: '1', b: ['x','y'], c: '' }. stringifyQuery делает обратное (массив - повторяющийся ключ), без ведущего знака вопроса.
Что проверяют тесты
разбирает
пустая строка
декодирует значения
собирает обратно
кодирует при сборке
Как подойти
Ручной split('&') почти всегда содержит баги: не декодирует %-последовательности, ломается на значении с '=' внутри, теряет ключ без значения. URLSearchParams закрывает всё это. Единственное, что приходится делать самому, - политика повторяющихся ключей, потому что стандарта на неё нет.
Подсказки: 2
- URLSearchParams сам разбирает и кодирует - писать разбор руками не нужно.
- Повторяющиеся ключи надо собирать в массив вручную: Object.fromEntries их потеряет.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.