如何对for循环的输出进行字符串化?

时间:2016-12-31 18:55:22

标签: javascript query-string

我有以下for循环,我希望将循环的输出字符串化为查询字符串,如下面所需的输出所示。我使用qs npm包来表示URL。

获得所需输出的最佳方法是什么?

  for (i = 0; i < 2; i++) { 
      var foo =  "pr" + [i] + "va";
      var bar = "value";
  };
  //Desired output: ?pr0va=value&pr1va=value

6 个答案:

答案 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)

你可以这样做。

&#13;
&#13;
var output = "?";
for (i = 0; i < 2; i++) { 
  output += "pr" + [i] + "va=value&";
};
console.log(output.slice(0, -1))
&#13;
&#13;
&#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;
      } , {} )

使用第三方

现在,我将使用querystringqueryParams转换为查询字符串

 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)

您可以创建一个大小数组,循环然后加入它:

&#13;
&#13;
Option
&#13;
&#13;
&#13;