2017-05-09 2 views
0

Ich habe ein Objekt mit anderen Objekten darin, auf die ich zugreifen muss. Wie mache ich es?Schleife durch das Objekt und bekomme andere Objekte (Javascript)

Rechts die In-Schleife gibt nur "a" zurück. Das Problem ist, ich versuche nicht, eine Zeichenfolge in ein Objekt zu bekommen, ich bekomme ein Objekt in einem Objekt.

var obj = { 
 
\t a: {r: "why cant i access"}, 
 
} 
 

 
for(var o in obj){ 
 
\t document.getElementById("div").innerHTML = o.r; 
 
}
<div id="div"></div>

+0

Mögliche Duplikat [Wie kann ich eine Schleife durch oder ein JavaScript-Objekt aufzuzählen?] (Http://stackoverflow.com/questions/684672/how-do-i -loop-through-or-enumerate-a-javascript-object) –

+1

Sie müssen also Rekursion durchführen, um die Objekte darin zu durchlaufen. – epascarello

+0

@epascarello Sie haben _just zurückgegeben "a" _, also bin ich nicht sicher, ob sie Rekursion benötigen, deshalb habe ich es als Duplikat der Frage ohne Rekursion gekennzeichnet –

Antwort

1

Obwohl die Antwort von Piyush geschrieben wird für das Objekt arbeiten Sie gegeben haben, ist es nicht allgemein und für alle Arten von Objekten nicht. Hier ist ein Skript Eigenschaften eines Objekts zu lesen:

var obj = {a: {b:'2'}}; 

var writeProperties = function (obj) { 
    for(var prop in obj) { 
    console.log("Property: ",prop,"Property Type:",typeof(obj[prop])); 
    if(typeof(obj[prop]) == 'object') { 
     writeProperties(obj[prop]); 
    } else { 
     console.log(prop + ':' + obj[prop]); 
    } 
    } 
} 

writeProperties(obj); 
1

Wenn Ihre Objektstruktur befestigt ist, wie in Ihrer Frage erwähnt, können Sie Schleife zweimal die inneren Objekte zu erhalten.

var p = {a: {b: 1}} 
 
for (var key in p) { 
 
    for (var k in p[key]) { 
 
    console.log(k + " -> " + p[key][k]); 
 
    } 
 
    
 
}

Verwandte Themen