2016-10-20 6 views
0

eine variable Bibliothek gegeben ...Druckwerte von verschachteltem Objekt

var library = { 
    tracks: { t01: { id: "t01", 
       name: "Code Monkey", 
       artist: "Jonathan Coulton", 
       album: "Thing a Week Three" }, 
     t02: { id: "t02", 
       name: "Model View Controller", 
       artist: "James Dempsey", 
       album: "WWDC 2003"}, 
     t03: { id: "t03", 
       name: "Four Thirty-Three", 
       artist: "John Cage", 
       album: "Woodstock 1952"} 
     }, 
    playlists: { p01: { id: "p01", 
        name: "Coding Music", 
        tracks: ["t01", "t02"] 
       }, 
      p02: { id: "p02", 
        name: "Other Playlist", 
        tracks: ["t03"] 
       } 
     } 
} 

... Ich mag eine Liste aller Wiedergabelisten in meiner Bibliothek in folgenden Form drucken:

p01: Coding Music - 2 tracks 
p02: Other Playlist - 1 tracks 

Mein Code wie gibt mir:

{ id: 'p01', name: 'Coding Music', tracks: [ 't01', 't02' ] } 
{ id: 'p02', name: 'Other Playlist', tracks: [ 't03' ] } 

Code:

var keys = Object.keys(library.playlists); 
for(var i = 0; i < keys.length; i++) { 
    var key = keys[i]; 
    console.log(library.playlists[key]); 
} 

Irgendwelche Ideen, wie ich meinen Code ändern muss, um das richtige Ergebnis zu erhalten?

+0

'pl = library.playlists [key]; console.log (pl.id + ":" + pl.name + "-" + pl.tracks.length) '?? –

Antwort

1

Sie können Object.keys() und forEach() Schleife wie folgt verwenden.

var library = {"tracks":{"t01":{"id":"t01","name":"Code Monkey","artist":"Jonathan Coulton","album":"Thing a Week Three"},"t02":{"id":"t02","name":"Model View Controller","artist":"James Dempsey","album":"WWDC 2003"},"t03":{"id":"t03","name":"Four Thirty-Three","artist":"John Cage","album":"Woodstock 1952"}},"playlists":{"p01":{"id":"p01","name":"Coding Music","tracks":["t01","t02"]},"p02":{"id":"p02","name":"Other Playlist","tracks":["t03"]}}} 
 

 
var o = library.playlists; 
 
var result = Object.keys(o).forEach(function(e) { 
 
    var str = e + ': ' + o[e].name + ' - ' + o[e].tracks.length + ' tracks'; 
 
    console.log(str) 
 
})

+0

Ehrfürchtig. Vielen Dank. Was, wenn ich eine Funktion verwenden wollte, um das gleiche Ergebnis zu erhalten? – snailspeed

+0

Vergiss es. Es tut uns leid. Herausgefunden. – snailspeed

Verwandte Themen