01 сентября 2021 07 сентября 2021 JavaScript


Когда необходимо обработать query_string из урла с помощью JS то самый простой и экономный вариант использовать URLSearchParams и reduce следующим образом

// распасить урл
const searchParams = new URLSearchParams(window.location.search.substring(1)); 

// преобразовать в обычный Объект
const params = [...searchParams.entries()].reduce((acm, x) => {return {...acm, [x[0]]: x[1] }}, {}); 

константа params будет содержать словарь с данными из запроса (исключая дубли)

Может статься так, что потребуется передать строку больше чем 2048 байт, в таком случае использовать  window.location.search не получится из-за ограничений GET запроса протокола HTTP.

Но можно воспользоваться дополнение window.location.hash это строка Хеш идущая после символа #

в таком случае чуть в код добавляет маленькая вставка

const searchParams1 = new URLSearchParams(
    window.location.search.substring(1) + '&' + window.location.hash.substring(1)
);

const args = [...searchParams1.entries()].reduce(
    (akm, x) => ({ ...akm, ...Object.fromEntries([x]) }), {},
);