Maison  >  Article  >  interface Web  >  Comment pouvez-vous parcourir des objets JavaScript imbriqués ?

Comment pouvez-vous parcourir des objets JavaScript imbriqués ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 05:24:31662parcourir

How Can You Iterate Through Nested JavaScript Objects?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn