[英]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
自定義函數為:
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, ',');
您可以這樣操作。 如果不需要可重用的函數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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.