2016-10-21 4 views
1

Ich habe ein Objekt, das wie das Beispiel unten geschachtelt ist.Wie verwendet man die/in-Schleife, um Objekteigenschaften zu übertragen?

var posts = { 
     "post1": { 
      "slug": "slug1", 
      "title": "title1", 
     }, 
     "post2": { 
      "slug": "slug2", 
      "title": "title2", 
    } 
}; 

Ich versuche eine For/In-Schleife zu schreiben, die es mir ermöglicht, dieses Objekt zu durchlaufen.

var testLoop = function() { 
    for (var prop in posts){ 
     post = prop; 
     console.log(post); // Outputs post1 and post2 
     console.log(post.slug); // Outputs undefined 
    } 
} 

Wie oben gesehen, kann ich nicht die Eigenschaften jedes iterierten Objekts speichern und später darauf zugreifen. Nur der Name des Objekts wird gespeichert und protokolliert. Wenn ich typeof starte, sehe ich, dass es nicht einmal ein Objekt ist, sondern nur eine Zeichenfolge.

Wie kann ich jede iterierte Eigenschaft während der Schleife korrekt als Objekte (post1, post2 usw.) speichern, damit ich ihre Eigenschaften mit Punktnotation aufrufen kann?

+0

'Beiträge [prop] .Slug' – Keith

+0

Sie können über' for..in' lesen und lernen, was es tut. – Amit

Antwort

1

Wenn Sie

for (var prop in posts){ ... } 

verwenden Es Schleifen über den String-Schlüssel in dem posts Objekt.

Der Hauptpunkt hier ist, dass prop eine Zeichenfolge sein wird, und kein Objekt wie Ihr aktueller Code erwartet.

Wie Benutzer in den Kommentaren vorgeschlagen, weil prop der Objektschlüssel als Zeichenfolge ist, müssen Sie verwenden, um auf das tatsächliche Objekt zu verweisen.

Hier ist ein aktualisierter Code.

Verwandte Themen