Javascript 整洁地获取带有逗号分隔值的查询字符串

Javascript 整洁地获取带有逗号分隔值的查询字符串,javascript,jquery,query-string,str-replace,Javascript,Jquery,Query String,Str Replace,我正在尝试获取一个如下所示的查询字符串: ?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 =

我正在尝试获取一个如下所示的查询字符串:

?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格式=['hlp','clp'],焦点=['coding','robotics','electronics'];
函数getQueryString(格式、焦点){
var formatsString=formats.toString();
var focusessString=focuss.toString();
var finalString=“?focuss=“+focusessstring+”&format=“+formatsString;
返回最后一环;
}
var结果=getQueryString(格式、焦点);

控制台日志(结果)自定义函数将是:

 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, ',');