2017-06-15 3 views
1

Ich habe die folgende JSON-Struktur und muss über die verschachtelten Werte von data.list iterieren. Ich bin in der Lage, einen verschachtelten Wert zu erhalten, wenn ich mit dem folgenden console.log(data["list"][0]["My website is https://www.test.com"][0][0].command); festcode, aber nicht, wenn ich versuche, die Objekte von data.list insgesamt zu iterieren.Zugriff auf verschachtelte Array-Objekte und Werte in JSON

var data = { 
    "list": [ 
     { 
      "The first website is https://www.w3.org/": [ 
       [ 
        { 
         "command": "This is dummy content", 
         "new": false, 
         "message": "This was fun to make" 
        } 
       ] 
      ] 
     }, 
     { 
      "The second website is https://www.mozilla.org": [ 
       [ 
        { 
         "command": "This is the second command", 
         "new": true, 
         "message": "Lorem ipsum" 
        } 
       ] 
      ] 
     } 
    ], 
    "verified": false 
}; 


for (var i = 0; i < data.list.length; i++) { 
     // this doesn't work 
     console.log(data.list[i][0]["0"]["0"]).command; 
} 
+0

erhalten Sie einen Fehler? –

+5

Warum würden Sie eine Eigenschaft auf eine beliebige Zeichenfolge setzen? Sie müssen Ihr Schema wirklich überdenken. –

+0

Ihre JSON ist sehr seltsam, Sie haben ein 1-Element-Array von 1-Element-Array jedes Mal? – ValLeNain

Antwort

1

Sie könnten den ersten Schlüssel im Objekt verwenden.

var data = { list: [{ "The first website is https://www.w3.org/": [[{ command: "This is dummy content", new: false, message: "This was fun to make" }]] }, { "The second website is https://www.mozilla.org": [[{ command: "This is the second command", new: true, message: "Lorem ipsum" }]] }], verified: false }, 
 
    i; 
 

 
for (i = 0; i < data.list.length; i++) { 
 
    console.log(data.list[i][Object.keys(data.list[i])[0]][0][0].command); 
 
}

1

Da die Elemente in der Liste sind Objekte, die Sie über sie in einer separaten Schleife durchlaufen haben. Außerdem müssen Sie berücksichtigen, dass es sich um ein Objekt handelt, daher sollten Sie die Objekteigenschaft als Index und nicht als Ganzzahl verwenden.

Das sollte unter arbeiten:

for (var i = 0; i < data.list.length; i++) { 
     // this doesn't work 
     for (var property in data.list[i]) { 
      console.log(data.list[i][property][0][0].command); 
     } 
} 
Verwandte Themen