Maison > interface Web > js tutoriel > Comment parcourir des objets JavaScript imbriqués : récursifs ou non récursifs ?

Comment parcourir des objets JavaScript imbriqués : récursifs ou non récursifs ?

Susan Sarandon
Libérer: 2024-11-02 05:14:02
original
938 Les gens l'ont consulté

How to Traverse Nested JavaScript Objects: Recursive vs. Non-Recursive?

Navigation dans les objets JavaScript imbriqués : un guide complet

Itérer dans des objets JavaScript complexes et imbriqués peut poser un défi, en particulier lorsque vous devez récupérer objets imbriqués spécifiques basés sur un identifiant de chaîne fourni. Dans cet article, nous vous guiderons à travers une approche globale pour parcourir efficacement les objets imbriqués.

Pour illustrer le défi, considérons la structure d'objets imbriqués suivante :

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 non récursive

(Introduit en 2023)

Pour un approche non récursive, nous pouvons utiliser une pile pour parcourir l'objet :

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

Approche récursive

Pour une approche récursive qui fournit une itération profonde, nous pouvons tirer parti Object.keys() :

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

Les deux approches fournissent des moyens efficaces de parcourir les objets JavaScript imbriqués. Que vous optiez pour l'approche non récursive ou récursive dépend de vos besoins et préférences spécifiques.

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