Maison  >  Article  >  interface Web  >  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
Susan Sarandonoriginal
2024-11-02 05:14:02828parcourir

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: []
    }
  ]
};

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]);
      }
    });
  }
};

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]);
    }
  });
};

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!

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