Maison > interface Web > js tutoriel > Comment puis-je accéder efficacement à un objet profondément imbriqué dans une structure de tableau complexe ?

Comment puis-je accéder efficacement à un objet profondément imbriqué dans une structure de tableau complexe ?

Patricia Arquette
Libérer: 2024-11-11 22:21:02
original
781 Les gens l'ont consulté

How can I efficiently access a deeply nested object within a complex array structure?

Trouver des objets profondément imbriqués dans des tableaux

Imaginez avoir un objet imbriqué complexe comme celui ci-dessous :

[
    {
        "title": "some title",
        "channel_id": "123we",
        "options": [
            {
                "channel_id": "abc",
                "image": "http://asdasd.com/all-inclusive-block-img.jpg",
                "title": "All-Inclusive",
                "options": [
                    {
                        "channel_id": "dsa2",
                        "title": "Some Recommends",
                        "options": [
                            {
                                "image": "http://www.asdasd.com",
                                "title": "Sandals",
                                "id": 1,
                                "content": {}
                            }
                        ]
                    }
                ]
            }
        ]
    }
]
Copier après la connexion

Vous souhaitez récupérer l'objet avec l'identifiant 1. Au lieu de naviguer manuellement dans chaque niveau, explorons une meilleure solution. approche.

La récursion à la rescousse

La récursion, où une fonction s'appelle elle-même, fournit une solution élégante. La fonction suivante parcourt l'objet imbriqué :

function getObject(theObject) {
    var result = null;
    if (theObject instanceof Array) {
        for (var i = 0; i < theObject.length; i++) {
            result = getObject(theObject[i]);
            if (result) {
                break;
            }
        }
    } else {
        for (var prop in theObject) {
            console.log(prop + ': ' + theObject[prop]);
            if (prop == 'id') {
                if (theObject[prop] == 1) {
                    return theObject;
                }
            }
            if (theObject[prop] instanceof Object || theObject[prop] instanceof Array) {
                result = getObject(theObject[prop]);
                if (result) {
                    break;
                }
            }
        }
    }
    return result;
}
Copier après la connexion

Cette fonction gère les tableaux et les tableaux de propriétés, parcourant l'objet entier pour trouver la correspondance.

Démo et conclusion

Voici un jsFiddle mis à jour démontrant la fonction : https://jsfiddle.net/FM3qu/7/.

En conclusion, la récursion fournit un moyen efficace de parcourir des objets profondément imbriqués et de récupérer des objets spécifiques en fonction de critères. En tirant parti de la récursivité, nous pouvons éviter une navigation manuelle fastidieuse et gérer facilement des structures imbriquées complexes.

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