Maison >interface Web >js tutoriel >Comment puis-je parcourir efficacement une arborescence d'objets JSON en JavaScript pur ?

Comment puis-je parcourir efficacement une arborescence d'objets JSON en JavaScript pur ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-30 17:34:15216parcourir

How Can I Efficiently Traverse a JSON Object Tree in Pure JavaScript?

Parcours d'une arborescence d'objets JSON en JavaScript sans bibliothèques externes

Parcourir une arborescence d'objets JSON peut être une tâche courante lorsque l'on travaille avec des structures de données complexes . Bien que JavaScript fournisse une riche bibliothèque de fonctions pour travailler avec des objets, il n'existe pas de bibliothèque dédiée pour parcourir les arborescences d'objets. Cela peut sembler une tâche simple, mais cela conduit souvent à réinventer la roue.

Contrairement à XML, qui propose diverses approches basées sur DOM pour parcourir les arbres, JavaScript ne dispose pas de mécanismes similaires pour les objets JSON. Cet article présente une solution efficace et simple pour parcourir les arborescences d'objets JSON à l'aide de fonctions JavaScript pures.

Fonction de traversée récursive personnalisée

La solution consiste à créer une fonction récursive personnalisée qui traverse l'arborescence des objets. La fonction traverse() prend deux paramètres :

  • o : L'objet JSON à parcourir
  • func : Une fonction de rappel qui traite chaque nœud de l'arborescence

La fonction parcourt chaque propriété et sa valeur dans l'objet. Pour chaque paire propriété-valeur, il appelle la fonction de rappel pour traiter les données. Si la valeur est un autre objet et non nulle, la fonction s'appelle récursivement pour parcourir l'objet enfant.

Exemple d'utilisation

Pour démontrer l'utilisation, considérons ce qui suit Objet JSON :

var o = { 
    foo:"bar",
    arr:[1,2,3],
    subo: {
        foo2:"bar2"
    }
};

Nous définissons une fonction process() pour enregistrer la clé et la valeur de chacun node:

function process(key,value) {
    console.log(key + " : "+value);
}

Maintenant, nous pouvons parcourir l'arborescence des objets en utilisant traverse():

traverse(o,process);

Cela affichera ce qui suit :

foo : bar
arr : 1
arr : 2
arr : 3
subo : [object Object]
foo2 : bar2

Notez que la sortie inclut la clé du sous-objet mais pas ses propriétés. En effet, la fonction traverse() ne traverse pas le sous-objet de manière récursive. Pour réaliser une traversée en profondeur, il faudrait modifier le code en conséquence.

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