我有以下for循环,我希望循环的输出被串化为一个查询字符串,如下面所需的输出所示。我正在使用qs npm软件包来对网址进行字符串化。如何将来自for循环的输出字符串化?
获得理想输出的最佳方法是什么?
for (i = 0; i < 2; i++) {
var foo = "pr" + [i] + "va";
var bar = "value";
};
//Desired output: ?pr0va=value&pr1va=value
我有以下for循环,我希望循环的输出被串化为一个查询字符串,如下面所需的输出所示。我正在使用qs npm软件包来对网址进行字符串化。如何将来自for循环的输出字符串化?
获得理想输出的最佳方法是什么?
for (i = 0; i < 2; i++) {
var foo = "pr" + [i] + "va";
var bar = "value";
};
//Desired output: ?pr0va=value&pr1va=value
而不是创建变量 - 创建字符串并在每个循环中做串联。
查看我的代码片段。
var query = "";
var size = 2;
for (i = 0; i < size; i++) {
query += "pr" + [i] + "va=value";
if (i+1<size)
query += "&";
};
console.log(query);
完美,谢谢! – iabramo
@iabramo没问题! –
像这样的事情?
var output = '?';
for (i = 0; i < 2; i++) {
var foo = "pr" + [i] + "va";
var bar = "value";
output += foo + "=" + bar + "&";
};
console.log(output);
//Desired output: ?pr0va=value&pr1va=value
这应该为你工作。
function test() {
var i =0;
var arr = [];
for(i=0;i<2;i++) {
arr.push("pr" + [i] + "va=value");
}
console.log('?' + arr.join('&').toString())
}
你可以这样做。
var output = "?";
for (i = 0; i < 2; i++) {
output += "pr" + [i] + "va=value&";
};
console.log(output.slice(0, -1))
如果我要审查这些代码,我宁愿看到以下内容:
querystring
所有这一切都是可读性,简单性和可维护性的好处。我承认这是有争议的..所以请不要认为:)
我会用你的代码为基准,并提高从那里
for (i = 0; i < 2; i++) {
var foo = "pr" + [i] + "va";
var bar = "value";
};
请注意,您的代码段是不完整的,所以,一开始我的将是不完整的太,但我会到达那里
我会尽量避免使用拼接模板文字
for (i = 0; i < 2; i++) {
`pr${i}va=value`;
};
我会遍历使用数组数,并减少构造一个对象
const queryParams = Array(2).fill().reduce((object, value, index) => {
object[`pr${index}va`] = 'value';
return object;
} , {})
现在我会用querystring
转queryParams
到查询字符串
return querystring.stringify(queryParams);
/**
* @param {number} count - number of query parameters to generate
* @returns {string} query string. for example for count=2 will return `pr1va=value&pr2va=value`
**/
function generateQueryString(count=2){
const queryParams = Array(count).fill().reduce((object, value, index) => { // convert N number to key-value map using reduce
object[`pr${index}va`] = 'value';
return object;
} , {});
return querystring.stringify(queryParams);
}
您可以创建一个大小,循环数组,然后加入吧:
function createString(size) {
return new Array(size).fill(0).map((v, i) => {
\t return "pr" + i + "va=value";
}).join("&");
}
console.log(createString(2));
可以改写你的问题?我认为我们都因为代码片段而误解了它。如果你想使用qs包,那么请显示你拥有的数据,如果你只想创建字符串,那么你不需要任何qs库,我们的答案是正确的。 Qs如果要将数据结构转换为查询,并且我没有看到任何数据结构,则在此处创建它以创建查询具有很小的意义,并且只需在答案中创建字符串查询即可。 –
@MaciejSikora我有一个如下所示的JSON响应。我有一些我从API中获取的产品,所以我想通过循环来提取这些值并将它们放入查询字符串中。 “itemizations”: { “名”: “T恤”, “量”: “1.00000000”, “注意事项”: “普通的T恤”, “item_variation_name”: “白” } { “名”: “T恤”, “量”: “1.00000000”, “注意事项”: “普通的T恤”, “item_variation_name”: “白” } ] – iabramo