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

Разбор и сборка query-строки

Условие

parseQuery('?a=1&b=x&b=y&c') → { a: '1', b: ['x','y'], c: '' }. stringifyQuery делает обратное (массив - повторяющийся ключ), без ведущего знака вопроса.

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

  • разбирает

  • пустая строка

  • декодирует значения

  • собирает обратно

  • кодирует при сборке

Как подойти

Ручной split('&') почти всегда содержит баги: не декодирует %-последовательности, ломается на значении с '=' внутри, теряет ключ без значения. URLSearchParams закрывает всё это. Единственное, что приходится делать самому, - политика повторяющихся ключей, потому что стандарта на неё нет.

Подсказки: 2
  1. URLSearchParams сам разбирает и кодирует - писать разбор руками не нужно.
  2. Повторяющиеся ключи надо собирать в массив вручную: Object.fromEntries их потеряет.

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

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