使用逗号分隔值巧妙地获取查询字符串
Neatly get query string with comma separated values
我正在尝试获取如下所示的查询字符串:
?focuses=coding,robotics,electronics&format=clp,hlp
// or this
?focuses=coding,robotics,electronics
// or this
?focuses=coding&format=clp
我一直在努力:
// formats = ['hlp', 'clp'], focuses = ['coding', 'robotics']
var query = jQuery.param({formats, focuses});
query = query.replace(/%5B%5D/g, '');
query = query.replace(/(?!^)&formats=/g, ',');
query = query.replace(/(?!^)$focuses=/g, ',');
但不知何故我一直以:
?formats=hlp,clp,coding,robotics,electronics
你可以这样做。如果您不需要可重复使用的函数 getQueryString
,那么您可以将该代码移到您需要的函数之外。
var formats = ['hlp', 'clp'], focuses = ['coding', 'robotics','electronics'];
function getQueryString(formats, focuses){
var formatsString = formats.toString();
var focusesString = focuses.toString();
var finalString = "?focuses="+focusesString+"&format="+formatsString;
return finalString;
}
var result = getQueryString(formats, focuses);
console.log(result);
自定义函数为:
function query(args){
return "?" + Object.entries(args).map(([key, value]) => {
return key +"="+ value;
}).join("&");
}
所以可以这样做:
query({
focuses:["what", "ever"],
a:"property"
});
在将对象传递给 jQuery:
之前,将它们变成你想要的形式
jQuery.param({
formats: formats.join(','),
focuses: focuses.join(',')
});
这仍然将逗号编码为 %2C
(这是有效的),但如果您真的想使用文字逗号,您可以在之后替换它们:
jQuery.param({
formats: formats.join(','),
focuses: focuses.join(',')
}).replace(/%2C/g, ',');
我正在尝试获取如下所示的查询字符串:
?focuses=coding,robotics,electronics&format=clp,hlp
// or this
?focuses=coding,robotics,electronics
// or this
?focuses=coding&format=clp
我一直在努力:
// formats = ['hlp', 'clp'], focuses = ['coding', 'robotics']
var query = jQuery.param({formats, focuses});
query = query.replace(/%5B%5D/g, '');
query = query.replace(/(?!^)&formats=/g, ',');
query = query.replace(/(?!^)$focuses=/g, ',');
但不知何故我一直以:
?formats=hlp,clp,coding,robotics,electronics
你可以这样做。如果您不需要可重复使用的函数 getQueryString
,那么您可以将该代码移到您需要的函数之外。
var formats = ['hlp', 'clp'], focuses = ['coding', 'robotics','electronics'];
function getQueryString(formats, focuses){
var formatsString = formats.toString();
var focusesString = focuses.toString();
var finalString = "?focuses="+focusesString+"&format="+formatsString;
return finalString;
}
var result = getQueryString(formats, focuses);
console.log(result);
自定义函数为:
function query(args){
return "?" + Object.entries(args).map(([key, value]) => {
return key +"="+ value;
}).join("&");
}
所以可以这样做:
query({
focuses:["what", "ever"],
a:"property"
});
在将对象传递给 jQuery:
之前,将它们变成你想要的形式jQuery.param({
formats: formats.join(','),
focuses: focuses.join(',')
});
这仍然将逗号编码为 %2C
(这是有效的),但如果您真的想使用文字逗号,您可以在之后替换它们:
jQuery.param({
formats: formats.join(','),
focuses: focuses.join(',')
}).replace(/%2C/g, ',');