Maison > interface Web > js tutoriel > 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
Libérer: 2024-11-03 21:13:29
original
437 Les gens l'ont consulté

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

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

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

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

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

iterate(cars);
Copier après la connexion
Copier après la connexion

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 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