Maison > Article > interface Web > Comment pouvez-vous parcourir des objets JavaScript imbriqués ?
Itérer à travers des objets JavaScript imbriqués
Itérer à travers des objets JavaScript imbriqués peut être difficile, en particulier lorsque vous devez récupérer un objet spécifique identifié par un valeur de propriété spécifique. Prenons l'exemple ci-dessous :
var cars = { label: 'Autos', subs: [ { label: 'SUVs', subs: [] }, { label: 'Trucks', subs: [ { label: '2 Wheel Drive', subs: [] }, { label: '4 Wheel Drive', subs: [ { label: 'Ford', subs: [] }, { label: 'Chevrolet', subs: [] } ] } ] }, { label: 'Sedan', subs: [] } ] };
Approche itérative récursive :
Pour parcourir en profondeur la hiérarchie des objets, vous pouvez utiliser une approche récursive :
const iterate = (obj) => { Object.keys(obj).forEach(key => { console.log(`key: ${key}, value: ${obj[key]}`) if (typeof obj[key] === 'object' && obj[key] !== null) { iterate(obj[key]) } }) }
Cette fonction parcourt de manière récursive l'objet, imprimant les paires clé-valeur à chaque niveau. Si une propriété rencontrée contient un autre objet, la fonction s'appelle avec cet objet comme argument.
Approche itérative non récursive :
Une approche alternative non récursive implique en utilisant une structure de données de pile :
const iterate = (obj) => { const stack = [obj]; while (stack?.length > 0) { const currentObj = stack.pop(); Object.keys(currentObj).forEach(key => { console.log(`key: ${key}, value: ${currentObj[key]}`); if (typeof currentObj[key] === 'object' && currentObj[key] !== null) { stack.push(currentObj[key]); } }); } };
Cette fonction parcourt la hiérarchie des objets en utilisant une pile. Il extrait le dernier élément de la pile et parcourt ses propriétés. Si une propriété contient un objet, elle pousse cet objet sur la pile pour une itération ultérieure.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!