我的问题很简单。我知道查询字符串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..........
答案 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)