Код Junior HTTP-сервер, Express, NestJS обновлено

Разбор query string с повторяющимися ключами

Условие

Напиши parseQuery(qs): строка вида ?tag=a&tag=b&q=hello+world&empty=&flag (знак ? в начале может быть, может не быть) превращается в объект. Правила:

  • значения декодируются: + это пробел, %XX через decodeURIComponent;
  • ключ, встретившийся несколько раз, даёт массив значений в порядке появления;
  • key= даёт пустую строку, key без = тоже пустую строку;
  • пустые куски (&&) пропускаются.

Примеры

parseQuery("?tag=a&tag=b&q=hello+world") // {"tag":["a","b"],"q":"hello world"}
parseQuery("a=1&b=2") // {"a":"1","b":"2"}
parseQuery("?empty=&flag") // {"empty":"","flag":""}

Как подойти

Подсказки: 2
  1. Делить пару по первому =.
  2. Сначала замени + на пробел, потом декодируй.

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

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