JavaScript 数组到 URLencoded - wthis array in obj
JavaScript Array to URLencoded - wthis array in obj
我有这样的数组
{
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"
的索引
由于这是标记 [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>
您可以映射所有键值对并检查值是否为数组,然后添加括号和数组的值。
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
我有这样的数组
{
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"
的索引由于这是标记 [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>
您可以映射所有键值对并检查值是否为数组,然后添加括号和数组的值。
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