2016-12-31 7 views
0

Ich habe die folgende for-Schleife und ich möchte die Ausgabe der Schleife in eine Abfrage-Zeichenfolge wie in der gewünschten Ausgabe unten angegeben werden. Ich verwende das qs npm-Paket zum Festlegen von URLs.Wie kann ich die Ausgabe von einer for-Schleife stringieren?

Was ist der beste Weg, um die gewünschte Ausgabe zu erhalten?

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

können Sie Frage anders formulieren? Ich denke, wir alle missverstehen es wegen Code-Schnipsel. Wenn Sie qs Paket verwenden möchten, dann zeigen Sie bitte, welche Daten Sie haben, wenn Sie nur eine Zeichenfolge erstellen möchten, dann brauchen Sie dafür keine qs lib und unsere Antworten sind korrekt. Qs, wenn für konvertierende Datenstrukturen abzufragen, und ich sehe keine Datenstruktur, erstellen hier zum Erstellen von Abfrage hat kleinen Sinn und das gleiche wäre nur erstellen String-Abfrage wie in Antworten. –

+0

@MaciejSikora Ich habe eine JSON-Antwort, die wie folgt aussieht. Ich habe ein paar Produkte, die ich aus einer API ziehe, also möchte ich sie durchlaufen, um die Werte zu ziehen und sie in eine Abfragezeichenfolge zu setzen. "Aufzählungen": [ { "name": "T-Shirt", "Quantität": "1,00000000", "Notizen": "Regular T-Shirt", "item_variation_name": "White" } { "name": "T-Shirt", "Quantität": "1,00000000", "Notizen": "Regular T-Shirt", "item_variation_name": "White" } ] – iabramo

Antwort

2

Anstatt Variablen zu erstellen, erstellen Sie einen String und führen in jeder Schleife eine Verkettung durch.

Überprüfen Sie mein Code-Snippet.

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

Perfect, Vielen Dank! – iabramo

+0

@iabramo Kein Problem! –

0

So etwas wie das?

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

Dies sollte für Sie arbeiten.

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

Sie können es so machen.

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

0

Wenn ich einen solchen Code zu überprüfen wäre, würde ich es vorziehen, folgendes zu sehen:

  • Vermeiden Verkettung.
  • Verwendung der funktionalen Programmierung.
  • Angemessene Nutzung der dritten Parteien - also ja für querystring

die Alle sind zum besseren Lesbarkeit, Einfachheit und Wartbarkeit Vorteile. Und ich gebe zu, es ist strittig ..also bitte nicht argumentieren :)

ich Ihren Code als Basis verwenden und verbessern von dort

for (i = 0; i < 2; i++) { 
     var foo = "pr" + [i] + "va"; 
     var bar = "value"; 
    }; 

Beachten Sie, dass Ihre Schnipsel unvollständig ist, und so, am Anfang wird Mine nicht komplett zu , aber ich werde es bekommen

vermeiden Verkettung

I Verkettung mit Vorlage wörtlichen

for (i = 0; i < 2; i++) { 
    `pr${i}va=value`; 
}; 
0 vermeiden

Verwendung der funktionalen Programmierung

ich über Zahlen iterieren ein Array verwendet wird, und reduzieren ein Objekt zu konstruieren

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

Verwenden von 3rd Parteien

Jetzt werde ich querystring verwenden queryParams auf eine Abfrage zu drehen Zeichenkette

return querystring.stringify(queryParams); 

Alle zusammen jetzt

/** 
    * @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

Sie können eine Reihe von Größe, Schleife erstellen und dann beitreten:

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

 
console.log(createString(2));

Verwandte Themen