将数组转换为查询字符串

时间:2019-07-07 05:16:07

标签: javascript jquery arrays model-view-controller

我有一个过滤器页面,我得到了所有过滤器并设置为数组。

$('.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 :(得分:0)

在创建临时对象以存储数组名称后,使用mapjoin

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);

答案 1 :(得分:0)

假设所有复选框都在表单内,则只需调用var urlString = $("{selector-for-Form}").serialize()即可。这将为您节省很多麻烦,here  是它的Api文档。