2016-12-31 12 views
0

私は以下のforループを持っています。以下の目的の出力に示すように、ループの出力をクエリ文字列にストリング化したいと思います。私はqs npmパッケージをURLの文字列に使用しています。forループの出力をどのように文字列化できますか?

希望の出力を得るにはどうすればよいですか?

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

あなたは質問を言い換えることができますか?コードスニペットのために私たちはすべて誤解していると思います。もしあなたがqsパッケージを使いたいのであれば、あなたが持っているデータとして表示してください。文字列を作成したいのなら、qs libは必要ありません。私たちの答えは正しいです。クエリを変換するデータ構造の場合はQ、データ構造は表示されません。クエリを作成するにはここを作成してください。小さな感覚があり、同じように答えのような文字列クエリを作成するだけです。 –

+0

@MaciejSikora以下のようなJSONレスポンスがあります。私はAPIから引き出しているいくつかの製品を持っているので、それらをループして値を取り出し、それらをクエリ文字列に入れたいと思っています。 "箇条書き":[ { "名前": "Tシャツ"、 "量": "1.00000000"、 "注意": "正規Tシャツ"、 "item_variation_name": "ホワイト" } { "名前": "Tシャツ"、 "量": "1.00000000"、 "注意": "正規Tシャツ"、 "item_variation_name": "ホワイト" } ] – iabramo

答えて

2

変数を作成する代わりに、すべてのループで文字列を作成して連結します。

私のコードスニペットを確認してください。

var query = ""; 
 
    var size = 2; 
 

 
    for (i = 0; i < size; i++) { 
 
     query += "pr" + [i] + "va=value"; 
 
     
 
     if (i+1<size) 
 
     query += "&"; 
 
    }; 
 

 
    console.log(query);

+0

パーフェクト、ありがとう! – iabramo

+0

@iabramo問題ありません! –

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

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()) 
} 
0

このようにすることができます。

var output = "?"; 
 
for (i = 0; i < 2; i++) { 
 
    output += "pr" + [i] + "va=value&"; 
 
}; 
 
console.log(output.slice(0, -1))

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`; 
}; 
0関数型プログラミングの

使用

私は配列を使用して数値を反復処理、およびクエリにqueryParamsを回すために今、私はquerystringを使用するサードパーティ

を使用してオブジェクト

const queryParams = Array(2).fill().reduce((object, value, index) => { 
      object[`pr${index}va`] = 'value'; 
      return object; 
     } , {}) 

を構築するために削減されます文字列

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);   
} 
0

あなたは大きさ、ループの配列を作成し、それに参加することができます。

function createString(size) { 
 
    return new Array(size).fill(0).map((v, i) => { 
 
    \t return "pr" + i + "va=value"; 
 
    }).join("&"); 
 
} 
 

 
console.log(createString(2));

関連する問題