我有以下for循环,我希望将循环的输出字符串化为查询字符串,如下面所需的输出所示。我使用qs npm包来表示URL。
获得所需输出的最佳方法是什么?
for (i = 0; i < 2; i++) {
var foo = "pr" + [i] + "va";
var bar = "value";
};
//Desired output: ?pr0va=value&pr1va=value
答案 0 :(得分:2)
而不是创建变量 - 创建String并在每个循环中进行连接。
检查我的代码段。
var query = "";
var size = 2;
for (i = 0; i < size; i++) {
query += "pr" + [i] + "va=value";
if (i+1<size)
query += "&";
};
console.log(query);
答案 1 :(得分:1)
这应该适合你。
function test () {
var i =0;
var arr = [];
for(i=0;i<2;i++) {
arr.push( "pr" + [i] + "va=value" );
}
console.log('?' + arr.join('&').toString())
}
答案 2 :(得分:0)
这样的东西?
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
答案 3 :(得分:0)
你可以这样做。
var output = "?";
for (i = 0; i < 2; i++) {
output += "pr" + [i] + "va=value&";
};
console.log(output.slice(0, -1))
&#13;
答案 4 :(得分:0)
如果我要查看此类代码,我希望看到以下内容:
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`;
};
我将使用数组迭代数字,并使用reduce来构造对象
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);
}
答案 5 :(得分:0)
您可以创建一个大小数组,循环然后加入它:
Option
&#13;