Преобразовать массив в строку запроса - PullRequest
0 голосов
/ 07 июля 2019

У меня есть страница для фильтров, я получаю все фильтры и задаю массив.

$('.content-items:checkbox:checked').each(function () {
    var name = $(this).attr('name');
    if (name.slice(-2) === '[]') {
        name = $(this).attr('name').slice(0, -2);
        if (typeof params[name] === 'undefined') {
            params[name] = [];
        }
        params[name].push($(this).val());
    } else {
        params[name] = $(this).val();
    }
});

У меня есть массив фильтров, например cat[2]{"7","3"},fac[1]{"1"}.

Я хочупреобразовать его в строку запроса и изменить URL.

/ product? cat [0] = 7 & cat [1] = 3 & fac [0] = 1

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Предполагая, что все ваши флажки находятся внутри формы, вы можете просто позвонить var urlString = $("{selector-for-Form}").serialize(). Это избавит вас от многих хлопот, здесь - это документация Api для него.

0 голосов
/ 07 июля 2019

Используйте map и join после создания временного объекта для хранения имен массивов:

const cat = ["7", "3"];
const fac = ["1"];
const obj = { cat, fac };
const res = "/product?" + Object.entries(obj).map(([k, v]) => v.map((e, i) => `${k}[${i}]=${e}`).join("&")).join("&");
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...