2017-05-10 8 views
0

Ich habe mir die ganze Nacht den Kopf dagegen geschlagen.Untergeordnete Daten in einem JavaScript-Objekt abrufen

Ich habe einen Dienst, der Daten zurückgibt, die wie folgt aussieht: enter image description here

Sie werden sehen, gibt es Objekte mit einer GUID, unter einem übergeordneten Objekt verschachtelt. Ich muss alle "GUID" -Objekte durchlaufen und die Attribute (d. H. Autor, Inhalt usw.) abrufen.

Die GUIDs sind dynamisch (ich weiß nicht, was sie im Voraus sind). Die Attribute darunter sind bekannt.

Ich habe Probleme herauszufinden, wie man es anvisiert. Ich kann nicht scheinen, eine for oder forEach Schleife erfolgreich zu benutzen.

Ich brauche natives JavaScript (d. H. Keine jQuery für diesen).

+0

Einfache Möglichkeit, verschachtelte 'for' nach verschachtelter Ebene zu verwenden,' für (var i = 0; i Aria

Antwort

2

Hier ist eine mögliche Lösung:

var keys = Object.keys(data); 
var results = 
keys.map(
    function(key){ 
     var datum = data[key]; 
     // do whatever with the data. 
     return { 
     "author" : data["author"] 
     } 
    } 
) 
// now results is an array of {"author"} objects. 
+0

Das hat für mich funktioniert. –

1

var x = { 
 
    'a-45-2455': { 
 
    'author': 'Some Name' 
 
    } 
 
}; 
 
    var keys = Object.keys(x); 
 
    keys.forEach(function(key,value){ 
 
     var author = x[key]['author']; 
 
     console.log(author); 
 
    });

Sie können die Daten auf diese Weise zugreifen. Sie können auch ein anderes Array aus den Werten erstellen und dieses verwenden.

1

Um eine Schleife durch ein Objekt verwenden for...in

Da Sie den Code des Objekts geschrieben haben, hier ist ein Ausschnitt mit Dummy-Objekt

var x = { 
 
    'a-45-2455': { 
 
    'author': 'Some Name' 
 
    } 
 
} 
 
    for(var keys in x){ 
 
    alert(x[keys].author) 
 

 

 
}

1

Wenn Sie mit eckigen Versuch eckig.für jede Schleife, um über alle GUIDs zu iterieren, sonst können Sie für jedes in Javascript verwenden. Siehe unten stehendes Code-Snippet.

var user ={ 
 
    '1': { 
 
    "name":'abc', 
 
    "age":26 
 
    }, 
 
    '2': { 
 
    "name":'def', 
 
    "age":28 
 
    } 
 
}; 
 

 
for(var key in user) { 
 
    console.log(user[key].name); 
 
}

1

Ich glaube, dass Sie durch alle Indizes mit der erweiterten for-Schleife durchlaufen kann. a.b ist das gleiche wie a["b"] in Javascript.

1

Hier ist eine andere Art und Weise durch JSON-Objekt

var obj = {a: 1, b: 2, c: {a: 1, b: 2}}; 
function walk(obj) { 
for (var key in obj) { 
if (obj.hasOwnProperty(key)) { 
    var val = obj[key]; 
    console.log(val); 

     walk(val); 
     } 
     } 
    } 
walk(obj); 

var obj = {a: 1, b: 2, c: {a: 1, b: 2}}; 
 
function walk(obj) { 
 
    for (var key in obj) { 
 
    if (obj.hasOwnProperty(key)) { 
 
     var val = obj[key]; 
 
     console.log(val); 
 
     
 
     walk(val); 
 
    } 
 
    } 
 
} 
 
walk(obj);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0

Sie durch den Objekteigenschaften wie diese laufen kann iterieren :

for(let key in Response){ 
    if(!Response.hasOwnProperty(key)) 
    continue; 
    //key will be each GUID 
    let yourObject = Response[key] //Each object in the list of objects 
} 

Sie können über for...in loops here

Hoffnung lesen, das hilft!

Verwandte Themen