Код 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
- Делить пару по первому
=. - Сначала замени
+на пробел, потом декодируй.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Ошибки домена в HTTP-ответ (problem+json)
Следующий вопрос
Роутер: сопоставление пути и параметров