Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно добавить свойства объекта в query string адресной строки (native javasc (https://javascript.ru/forum/dom-window/75335-kak-pravilno-dobavit-svojjstva-obekta-v-query-string-adresnojj-stroki-native-javasc.html)

s24344 24.09.2018 17:36

Как правильно добавить свойства объекта в query string адресной строки (native javasc
 
Всем привет. Ребята, подскажите, пожалуйста, как правильно добавить свойства объекта в query string адресной строки (native javascript)?
Например, у меня есть объект:
const obj = {
  size: [41332, 43296, 44278],
  brand: [13974],
  consists: [14, 2]
}

И при как-то событии я хочу из этого объекта сформировать следующую строку:
Код:

?size=41332;43296;44278&brand=13974&consists=14;2
и затем сконкатенировать с адресной строкой:
Код:

https://www.website.ru/catalog/kurtki/?size=41332;43296;44278&brand=13974&consists=14;2
и поместить эту строку в адресную строку.
Как мне это верно реализовать?

рони 24.09.2018 18:00

s24344,
https://api.jquery.com/jQuery.param/

s24344 24.09.2018 18:12

Спасибо. Но меня всё же больше интересует как реализовать данную задачу без jquery.

рони 24.09.2018 18:24

Цитата:

Сообщение от s24344
без jquery

reduce по ключам обьекта

s24344 24.09.2018 18:40

Спасибо. Попробую.

рони 24.09.2018 18:44

s24344,
const obj = {
  size: [41332, 43296, 44278],
  brand: [13974],
  consists: [14, 2]
}

let param = Object.keys(obj).reduce((str, key, i) => str += (i ? '&' : '?') + key + '=' + obj[key].join(';'),'')
window.location.search = param;

s24344 24.09.2018 19:03

Спасибо за помощь.

Malleys 24.09.2018 22:39

{
const obj = {
    size: [41332, 43296, 44278],
    brand: [13974],
    consists: [14, 2]
};

window.location.search = Object.keys(obj)
    .reduce((params, key) => (params.append(key, obj[key].join(";")), params), new URLSearchParams);
}

рони 24.09.2018 22:45

Malleys,
:thanks:

j0hnik 25.09.2018 01:37

window.location.search = '?' + Object.keys(obj).map(key => key + '=' + obj[key].join(';')).join('&');


Часовой пояс GMT +3, время: 03:39.