如何使用queryString或任何其他方法解析url params

时间:2017-08-31 12:17:51

标签: javascript reactjs

我的问题很简单。我知道查询字符串npm做的工作,但有特殊情况。 我的查询参数如下所示:

params={

foo:'bar',
data:[1,2,3],
data2:[4,5,6]
} 

我需要输出类似?foo=bar&data=1,2,3&data2=4,5,6

的内容

不是query-sting所做的。 query-sting将其输出为

?foo=bar&data=1 &data=2&data=3..........

4 个答案:

答案 0 :(得分:2)

您面临的问题可以通过以下方式解决:

const queryString = require('query-string')

const seacrh=queryString.stringify(params)

以上行生成search=?foo=bar&data=1%0C2%0C3&data2=4%0C5%0C6

为了删除不合逻辑的字符,只需使用以下代码行解码网址

const search1=decodeURIComponent(seacrh);

decodeURIComponent解码那些不合逻辑的字符串。

答案 1 :(得分:0)

以下应该做你的事。

我刚使用array.join将您的数据=设置为正确的格式..



var params={
  foo:'bar',
  data:[1,2,3],
  data2:[4,5,6]
};

//?foo=bar&data=1,2,3 & data2=4,5,6

console.log(
  `?foo=${params.foo}&data=${params.data.join(',')}&data2=${params.data2.join(',')}`);




答案 2 :(得分:0)

这是一个勾选的函数:

var params = {
  foo:   'bar',
  data:  [1,2,3],
  data2: [4,5,6]
};

function toQuery (params) {
  var queryString = '';
  // Check that we've been suplied with an object.
  if (params.constructor !== Object) {
    return queryString;
  }
  // Iterate over parameters
  for (var param in params) {
    if (!params.hasOwnProperty(param)) {
      continue;
    }
    if (typeof params[param] === 'string' || typeof params[param] === 'number') {
      queryString += '&' + param + '=' + params[param];
    }
    if (params[param].constructor === Array && params[param].length) {
      queryString += '&' + param + '=' + params[param].join(',');
    }
  }
  // Change first '&' to '?'
  if (queryString.length) {
    queryString = '?' + queryString.substring(1);
  }
  // Return the query string, empty string if no usable parameters.
  return queryString;
}

console.log(toQuery(params));

答案 3 :(得分:0)

如果您需要构建搜索:



let params = {
  foo: 'bar',
  data: [1, 2, 3],
  data2: [4, 5, 6]
};

let queryString = Object.keys(params).map(
  key => `${key}=${params[key]}`
).join('&');

console.log(queryString)




  • 字符串构造函数将自动以逗号分隔数组
  • 这是非常基本的,不包括任何URI编码等