首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整齐地获取带有逗号分隔值的查询字符串

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

Stack Overflow用户
提问于 2017-12-30 21:05:57
回答 3查看 5K关注 0票数 2

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

代码语言:javascript
复制
?focuses=coding,robotics,electronics&format=clp,hlp
// or this
?focuses=coding,robotics,electronics
// or this
?focuses=coding&format=clp

我一直在做这个:

代码语言:javascript
复制
// 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, ',');

但不知何故,我一直在说:

代码语言:javascript
复制
?formats=hlp,clp,coding,robotics,electronics
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-30 21:16:32

自定义函数将为:

代码语言:javascript
复制
 function query(args){
   return "?" + Object.entries(args).map(([key, value]) => {
     return key +"="+ value;
  }).join("&");
}

所以我们可以这样做:

代码语言:javascript
复制
 query({
  focuses:["what", "ever"],
  a:"property"
});
票数 4
EN

Stack Overflow用户

发布于 2017-12-30 21:18:04

在将对象传递给jQuery之前,先将它们转换为所需的形式:

代码语言:javascript
复制
jQuery.param({
  formats: formats.join(','),
  focuses: focuses.join(',')
});

这仍然将逗号编码为%2C (这是有效的),但如果您确实想使用文字逗号,可以在后面替换它们:

代码语言:javascript
复制
jQuery.param({
  formats: formats.join(','),
  focuses: focuses.join(',')
}).replace(/%2C/g, ',');
票数 2
EN

Stack Overflow用户

发布于 2017-12-30 21:12:45

你可以这样做。如果您不需要一个可重用的函数getQueryString,那么您可以将该代码移到需要的函数之外。

代码语言:javascript
复制
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);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48034207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档