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