Maison > interface Web > js tutoriel > Comment transformer efficacement un tableau JSON plat en une structure arborescente hiérarchique en JavaScript ?

Comment transformer efficacement un tableau JSON plat en une structure arborescente hiérarchique en JavaScript ?

DDD
Libérer: 2024-12-14 18:42:11
original
343 Les gens l'ont consulté

How to Efficiently Transform a Flat JSON Array into a Hierarchical Tree Structure in JavaScript?

Création d'une structure de données arborescente hiérarchique à partir d'un tableau JSON plat en JavaScript

Dans les scénarios impliquant des données JSON complexes, il devient essentiel de les organiser hiérarchiquement, surtout pour représenter des structures arborescentes. Cet article explique comment transformer un tableau JSON plat en un arbre hiérarchique en JavaScript.

Problème

Étant donné un tableau JSON plat composé d'objets avec trois propriétés clés :

  • id : Identifiant unique de chaque nœud
  • parentId : Identifiant du nœud parent (0 pour les nœuds racine)
  • niveau : profondeur du nœud dans l'arborescence

La tâche consiste à convertir ce tableau plat en une structure arborescente hiérarchique, où chaque nœud parent encapsule ses nœuds enfants.

Solution

Une approche efficace utilise un algorithme de recherche de carte pour construire l’arborescence. L'algorithme parcourt deux fois le tableau plat :

  1. Initialisation : Créez une carte où l'identifiant de chaque nœud est associé à son index dans le tableau. Initialisez les tableaux enfants pour chaque nœud.
  2. Construction d'arbre : parcourez à nouveau le tableau et mappez l'ID parent de chaque nœud au nœud parent correspondant. Si un nœud parent n'est pas trouvé, le nœud actuel devient un nœud racine.

Implémentation

L'extrait de code JavaScript suivant présente l'implémentation de l'arborescence. algorithme de construction :

function list_to_tree(list) {
  var map = {}, node, roots = [], i;
  
  for (i = 0; i < list.length; i += 1) {
    map[list[i].id] = i; // initialize the map
    list[i].children = []; // initialize the children
  }
  
  for (i = 0; i < list.length; i += 1) {
    node = list[i];
    if (node.parentId !== "0") {
      // handle dangling branches here
      list[map[node.parentId]].children.push(node);
    } else {
      roots.push(node);
    }
  }
  return roots;
}
Copier après la connexion

Utilisation

Pour convertir un tableau JSON plat en une structure arborescente hiérarchique :

var entries = [
    // ... entries as in the provided example
];

var tree = list_to_tree(entries);

// The resulting `tree` is the hierarchical data structure
Copier après la connexion

Conclusion

L'algorithme présenté dans cet article convertit efficacement les tableaux JSON plats en structures arborescentes hiérarchiques en JavaScript. Il s'appuie sur une approche de recherche sur carte pour une construction efficace, ce qui le rend adapté à la gestion d'ensembles de donné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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal