Адрес как состояние
Условие
readFilters(search) читает фильтры из строки запроса: { q: string, page: number, tags: string[] }. writeFilters(filters) собирает обратно, опуская пустые значения. page по умолчанию 1.
Что проверяют тесты
читает
значения по умолчанию
мусор в page не ломает
собирает обратно
пустые значения опускаются
туда и обратно
Как подойти
Адресная строка как единственный источник правды для фильтров: ссылку можно отправить, состояние переживает перезагрузку, работают кнопки назад и вперёд. Два правила: читать защищённо (в адрес может прийти что угодно от пользователя) и не писать значения по умолчанию. Пара к этому - history.pushState для новых состояний и replaceState для уточнений вроде ввода в поиске.
Подсказки: 3
- getAll возвращает все значения повторяющегося параметра.
- Значения по умолчанию в адрес не пишутся - так ссылка остаётся короткой.
- Number('абв') даёт NaN, Number('') даёт ноль.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.