Как разобрать и собрать строку запроса
Короткий ответ
URLSearchParams читает параметры из строки запроса:
const params = new URLSearchParams('?q=coffee&page=2&sort=price');
console.log(params.get('q'), params.get('page'));
console.log(params.get('missing'));Результат:
coffee 2
nullСборка запроса
Передайте объект, и toString() вернёт готовую строку с закодированными спецсимволами:
const params = new URLSearchParams({ q: 'tea & cake', page: 1 });
console.log(params.toString());Результат:
q=tea+%26+cake&page=1Несколько значений одного ключа
append() добавляет ещё одно значение, а getAll() возвращает все:
const params = new URLSearchParams();
params.append('tag', 'js');
params.append('tag', 'css');
console.log(params.toString());
console.log(params.getAll('tag').join(', '));Результат:
tag=js&tag=css
js, cssВ объект
Object.fromEntries() превращает параметры в обычный объект:
const params = new URLSearchParams('color=red&size=M');
console.log(JSON.stringify(Object.fromEntries(params)));Результат:
{"color":"red","size":"M"}Частая ошибка
Все значения — строки. Числа преобразуйте явно, иначе + склеит строки:
const params = new URLSearchParams('page=2');
console.log(params.get('page') + 1);
console.log(Number(params.get('page')) + 1);Результат:
21
3Функции из этого ответа
- URLSearchParams — Читает и собирает параметры адреса (часть после ?).
- URL — Разбирает адрес на части и собирает его обратно.