2017-02-27 3 views
0

Ich habe dieses JSONString in For-Schleife

{ 
    "elements": [{ 
      "company": "Microsoft", 
      "isValid": "yes" 
     }, { 
      "company": "Google", 
      "isValid": "no" 
     }, { 
      "company": "Apple", 
      "isValid": "yes" 
     } 
    ] 
} 

Und ich möchte einen String Ausgabe erstellen, die wie dieser ist

Microsoft is OK 

Google is NOT OK 

Apple is OK 

Wenn isValid = ja, dann ist es nicht in Ordnung ". Else ist es 'OK'

Hier mein Code

for (i in result) { 
var output = new StringBuilder(); 
if (result[i].isValid == "yes") { 
    output.append(result[i].company); 
    output.append(" is OK\n"); 
    } else { 
     output.append(result[i].company); 
    output.append(" is NOT OK\n"); 
    } 
} 
console.log(output.toString()); 

aber Ausgang ist nur die letzte (Apple-OK ist);

Bitte helfen

Antwort

4

Setzen Sie die StringBuilder otside der for-Schleife.
Ihr Code produziert jedes Mal neue StringBuilder, wenn Sie die Schleife eingeben.

var output = new StringBuilder(); 
for (i in result) { 
    if (result[i].isValid == "yes") { 
    output.append(result[i].company); 
    output.append(" is OK\n"); 
    } else { 
    output.append(result[i].company); 
    output.append(" is NOT OK\n"); 
    } 
} 
console.log(output.toString()); 
0

Dies liegt daran, console.log(output.toString()); aus der for-Schleife ist, so wird dies für die neuesten output ausgeführt werden ("Apple ist OK" in diesem Fall). Unter Verwendung von console.log(output.toString()); innerhalb der for-Schleife (wie in der folgenden Schnipsel) wird die Ausgabe für alle Werte von elements geben.

for (i in result) { 
var output = new StringBuilder(); 
if (result[i].isValid == "yes") { 
    output.append(result[i].company); 
    output.append(" is OK\n"); 
    } else { 
     output.append(result[i].company); 
    output.append(" is NOT OK\n"); 
    } 
console.log(output.toString()); 
} 
+0

Nicht sehr effizient, da Sie jedes Mal, wenn Sie die Schleife eingeben, einen neuen StringBuilder erstellen müssen. – Lapacho

+0

Ja! Deine Antwort ist optimaler. –

Verwandte Themen