@s24344

Как правильно из значений query string сформировать объект (native javascript)?

Всем привет. Ребята, подскажите, пожалуйста, как правильно из значений query string сформировать объект (native javascript)?
Например, у меня есть строка, полученная из адресной строки:
https://www.website.ru/catalog/kurtki/?size=41332;43296;44278&brand=13974&consists=14;2

И я хочу получить следующий объект:
const obj = {
  size: [41332, 43296, 44278],
  brand: [13974],
  consists: [14, 2]
}
  • Вопрос задан
  • 912 просмотров
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
const obj = (str
  .match(/\w+=[\d;]+/g) || [])
  .reduce((acc, n) => {
    const [ key, values ] = n.split('=');
    acc[key] = values.split(';').map(Number);
    return acc;
  }, {});

или

const obj = Array
  .from(new URL(str).searchParams)
  .reduce((acc, [ k, v ]) => (
    acc[k] = v.split(';').map(n => +n),
    acc
  ), {});
Ответ написан
Комментировать
FlashManiac
@FlashManiac
I am from Krypton!
Можно попробовать использовать JSON для любой структуры данных.
Правда есть ограничение - максимальная длинна URL
Кодировать так:
const baseURL = "https://www.website.ru/catalog/kurtki/?";
const data = {
  size: [41332, 43296, 44278],
  brand: [13974],
  consists: [14, 2]
};
const resultURL = baseURL + "?" + encodeURIComponent(JSON.stringify(data));


Декодировать аналогично:
const params = resultURL.split("?")[1];
const data = JSON.parse(decodeURIComponent(params));
Ответ написан
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы