Ich versuche, das folgende JSON-Array zu durchlaufen:
{
"id": "1",
"msg": "hi",
"tid": "2013-05-05 23:35",
"fromWho": "[email protected]"
}, {
"id": "2",
"msg": "there",
"tid": "2013-05-05 23:45",
"fromWho": "[email protected]"
}
Und habe folgendes versucht
for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(data[key].id);
}
}
Aber aus irgendeinem Grund bekomme ich nur den ersten Teil, ID 1 Werte.
Irgendwelche Ideen?
javascript
json
Alosyius
quelle
quelle
Antworten:
Ihr JSON sollte folgendermaßen aussehen:
Sie können das Array folgendermaßen durchlaufen:
Oder so (vorgeschlagen von Eric), sei vorsichtig mit der IE-Unterstützung
quelle
json.forEach(function(obj) { console.log(obj.id); });
Es gibt ein paar Probleme in Ihrem Code, zuerst muss Ihr JSON so aussehen:
Als nächstes können Sie wie folgt iterieren:
Und es gibt ein perfektes Ergebnis.
Sehen Sie die Geige hier: http://jsfiddle.net/zrSmp/
quelle
forJede Methode zur einfachen Implementierung.
quelle
Versuche dies
quelle
Da habe ich schon angefangen mich damit zu beschäftigen:
Und diese Funktion
Sie können es so nennen
Update nach Erics Kommentar
Wie Eric betonte, kann eine
for in
Schleife für ein Array unerwartete Ergebnisse haben . Die referenzierte Frage hat eine lange Diskussion über Vor- und Nachteile.Test mit für (var i ...
Aber es scheint, dass das Folgende ziemlich sicher ist:
Obwohl ein Test in Chrom das folgende Ergebnis hatte
Test mit
.forEach()
Zumindest in Chrom 30 funktioniert dies wie erwartet
Links
for in
am mdnfor in
weniger schlecht istquelle
for ... in
Schleifen sollten nicht für Arrays verwendet werdenfor each
.for ... in ...
ist ein Sprachkonstrukt zum Auflisten von Objektschlüsseln in beliebiger Reihenfolge. Das ist nicht das richtige Konstrukt für ein Array.Es funktioniert. Ich habe gerade JSON-Daten in eckige Klammern gesetzt. Die Daten sind:
Und die Schleife ist:
quelle
Es muss ein Array sein, wenn Sie darüber iterieren möchten. Sie werden sehr wahrscheinlich vermisst
[
und]
.Schauen Sie sich diese jsfiddle an: http://jsfiddle.net/lpiepiora/kN7yZ/
quelle
Ein bisschen spät, aber ich hoffe, ich kann anderen helfen: D.
Ihr JSON muss wie etwas aussehen, das Niklas bereits gesagt hat. Und dann geht es los:
Wenn Sie ein mehrdimensionales Array haben, ist dies Ihr Code:
quelle
Nun, alles was ich dort sehen kann ist, dass Sie zwei JSON-Objekte haben, die durch ein Komma getrennt sind. Wenn sich beide in einem Array (
[...]
) befinden würden, wäre dies sinnvoller.Und wenn sie sich innerhalb eines Arrays befinden, verwenden Sie einfach den Standardschleifentyp "for var i = 0 ...". Ich denke, es wird versucht, die "id" -Eigenschaft der Zeichenfolge "1", dann "id" von "hi" usw. abzurufen.
quelle
Eine kurze Lösung mit
map
und eine PfeilfunktionUnd um die Fälle abzudecken, in denen die Immobilie
"id"
nicht vorhanden ist, verwenden Siefilter
:quelle
oh mein ... warum macht das jeder so schwer !!?
Ihr Daten-Snippet muss ein wenig erweitert werden, und es muss so sein, um richtig json zu sein. Beachten Sie, dass ich nur das Array-Namensattribut "item" einbinde.
Ihr Java-Skript ist einfach
quelle