我有这样的数组
{
search: "job",
keywords: "",
cat: [12,28,38]
}
我需要这样的url字符串
?search=job&keywords=&cat%5B%5D=12&cat%5B%5D=28&cat%5B%5D=38
我在worpdress中的查询
请帮助
此代码
var serialize = function(obj, prefix) {
var str = [],
p;
for (p in obj) {
if (obj.hasOwnProperty(p)) {
var k = prefix ? prefix + "[" + p + "]" : p,
v = obj[p];
str.push((v !== null && typeof v === "object") ?
serialize(v, k) :
encodeURIComponent(k) + "=" + encodeURIComponent(v));
}
}
return str.join("&");
};
我有这个
search=job&keywords=&cat%5B0%5D=12&cat%5B1%5D=28&cat%5B2%5D=38
但是我不需要索引“ cat”
答案 0 :(得分:1)
由于它被标记为[jquery],因此您可以使用jquery为您完成此操作,而无需重新发明轮子:
var x = {
search: "job",
keywords: "",
cat: [12, 28, 38]
};
$("#result").text($.param(x));
div {
border: 1px solid pink;
padding: 4px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='result'></div>
答案 1 :(得分:0)
您可以映射所有键值对,并检查值是否为数组,然后添加方括号和数组的值。
var data = { search: "job", keywords: "", cat: ["12", "28", "38"] },
string = '?' + encodeURI(Object
.entries(data)
.map(([k, v]) => Array.isArray(v)
? v.map(a => `${k}[]=${a}`).join('&')
: `${k}=${v}`
).join('&'));
console.log(string); // ?search=job&keywords=&cat%5B%5D=12&cat%5B%5D=28&cat%5B%5D=38