¿Cómo puedo iterar sobre las propiedades de un objeto y sus objetos secundarios? Usé for in pero no puedo obtener la información de las canciones :/
let discos = []; let disco1 = { discoName: 'name disco1', band: 'band name', code: 1, songs: [ { 'songName': 'Song Name', 'duration': 200, }, ], }; let disco2 = { discoName: 'name disco 2', band: 'band name 2', code: 1, songs: [ { 'songName': 'Song Name 0', 'duration': 200, }, ], }; discos.push(disco1,disco2); for (let disco in discos){ console.log(discos[disco].discoName); }Si desea una solución verdaderamente recursiva, deberá usar una recursividad, ya que esto no se puede hacer usando for.. in :
let discos = []; let disco1 = { discoName: 'name disco1', band: 'band name', code: 1, songs: [ { 'songName': 'Song Name', 'duration': 200, }, ], }; let disco2 = { discoName: 'name disco 2', band: 'band name 2', code: 1, songs: [ { 'songName': 'Song Name 0', 'duration': 200, }, ], }; discos.push(disco1,disco2); const visitRec = (obj, visitor) => { if (obj instanceof Array) { obj.forEach(e => visitRec(e, visitor)); } else if (typeof obj == 'object') { for (let key in obj) { visitRec(obj[key], visitor); } } else { visitor(obj); } } visitRec(discos, console.log);Sin embargo, lo que creo que quieres es solo:
for (let disco of discos){ console.log(disco.discoName); for (let song of disco.songs) { console.log(song.songName); } }