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

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

Mary-Kate Olsen
Libérer: 2024-11-03 05:24:31
original
706 Les gens l'ont consulté

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: []
    }
  ]
};
Copier après la connexion

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])
        }
    })
}
Copier après la connexion

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]);
            }
        });
    }
};
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal