Maison  >  Article  >  interface Web  >  Comment rechercher un objet spécifique dans un objet JavaScript imbriqué par étiquette ?

Comment rechercher un objet spécifique dans un objet JavaScript imbriqué par étiquette ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 21:13:29355parcourir

How to Find a Specific Object within  a Nested JavaScript Object by Label?

Itération d'objets JavaScript imbriqués : identification des objets par étiquette

Pour parcourir un objet JavaScript imbriqué et localiser un objet avec une étiquette spécifique, suivez ces étapes :

Implémentation utilisant la récursion

Pour parcourir de manière récursive les éléments imbriqués object :

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])
        }
    })
}
iterate(obj); // obj is the main object to be traversed

Implémentation utilisant une approche non récursive (mise à jour 2023)

Pour une approche non récursive :

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

Exemple d'objet

Considérons l'objet imbriqué suivant :

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

En utilisant le Identifiant

Pour récupérer l'objet portant le label "4 Wheel Drive" en utilisant l'approche récursive, appelez :

iterate(cars);

Pour récupérer le même objet en utilisant l'approche non récursive, appelez :

iterate(cars);

Cela enregistrera toutes les paires clé-valeur dans l'objet imbriqué, y compris l'objet souhaité.

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