簡體   English   中英

整齊地獲取帶有逗號分隔值的查詢字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM