
Alosius
Ich versuche folgendes durchzuschleifen:
{
"messages": [{
"msgFrom": "13223821242",
"msgBody": "Hi there"
}, {
"msgFrom": "Bill",
"msgBody": "Hello!"
}]
}
Ich möchte abrufen msgFrom
und msgBody
Ich habe es versucht:
for (var key in data) {
var obj = data[key];
for (var prop in obj) {
if(obj.hasOwnProperty(prop)){
console.log(prop + " = " + obj[prop]);
}
}
}
Aber das Konsolenprotokoll wird gedruckt [Object]
Irgendwelche Ideen, was ich falsch mache?

Jonathan Lonowski
Es sieht so aus, als hätten Sie das gerade verpasst "messages"
Eigentum in der data
also iteriert die Schleife wahrscheinlich die Wurzel Object
eher als das Array
:
for (var key in data.messages) {
var obj = data.messages[key];
// ...
}
Wenn nicht data
eingestellt war messages
vor dem angegebenen Ausschnitt.
Sie sollten jedoch in Betracht ziehen, dies auf ein normales zu ändern for
Schleife für die Array
:
for (var i = 0, l = data.messages.length; i < l; i++) {
var obj = data.messages[i];
// ...
}
Alle hier bereitgestellten Antworten verwenden normale Funktionen, aber heutzutage verwendet der größte Teil unseres Codes Pfeilfunktionen in ES6. Ich hoffe, meine Antwort hilft den Lesern bei der Verwendung der Pfeilfunktion, wenn wir eine Iteration über ein Array von Objekten durchführen
let data = {
"messages": [{
"msgFrom": "13223821242",
"msgBody": "Hi there"
}, {
"msgFrom": "Bill",
"msgBody": "Hello!"
}]
}
Führen Sie .forEach im Array mit der Pfeilfunktion aus
data.messages.forEach((obj, i) => {
console.log("msgFrom", obj.msgFrom);
console.log("msgBody", obj.msgBody);
});
Führen Sie .map auf dem Array mit der Pfeilfunktion aus
data.messages.map((obj, i) => {
console.log("msgFrom", obj.msgFrom);
console.log("msgBody", obj.msgBody);
});

Tarvo Mäesepp
Um ein Objektarray oder nur ein Array in Javascript zu durchlaufen, können Sie Folgendes tun:
var cars = [{name: 'Audi'}, {name: 'BMW'}, {name: 'Ferrari'}, {name: 'Mercedes'}, {name: 'Maserati'}];
for(var i = 0; i < cars.length; i++) {
console.log(cars[i].name);
}
Es gibt auch die für jede() Funktion, die eher “Javascript-artig” und auch weniger Code, aber komplizierter für ihre Syntax ist:
cars.forEach(function (car) {
console.log(car.name);
});
Und beide geben folgendes aus:
// Audi
// BMW
// Ferrari
// Mercedes
// Maserati
In Ihrem Skript sind Daten Ihr gesamtes Objekt.
key ist “messages”, ein Array, das Sie wie folgt durchlaufen müssen:
for (var key in data) {
var arr = data[key];
for( var i = 0; i < arr.length; i++ ) {
var obj = arr[ i ];
for (var prop in obj) {
if(obj.hasOwnProperty(prop)){
console.log(prop + " = " + obj[prop]);
}
}
}
}
10101700cookie-checkWie kann ich ein JavaScript-Objektarray durchlaufen?yes
console.log(obj, prop);
– zerkms
22. Oktober 2013 um 22:21 Uhr
Sie sollten im Allgemeinen versuchen, die Verwendung zu vermeiden
for..in
zumArray
s.– Jonathan Lonowski
22. Oktober 2013 um 22:21 Uhr
Der einzige glaubwürdige Grund, for..in nicht mit einem Array zu verwenden, ist, dass die Eigenschaften möglicherweise nicht in der erwarteten Reihenfolge zurückgegeben werden. Ansonsten ist es nicht besser oder schlechter als die Verwendung von for..in für ein anderes Objekt (unerwartete Eigenschaften, Eigenschaften aus der
[[Prototype]]
etc.).– RobG
22. Oktober 2013 um 22:31 Uhr