Construire la hiérarchie de l'arbre de liste à plat avec champ parent?
J'ai une liste de "page" objets avec un parent
champ. Ce champ parent fait référence à un autre objet dans la liste. Je voudrais créer une hiérarchie de l'arbre à partir de cette liste en fonction de ce champ.
Voici ce que ma liste ressemble à ceci:
[
{
id: 1,
title: 'home',
parent: null
},
{
id: 2,
title: 'about',
parent: null
},
{
id: 3,
title: 'team',
parent: 2
},
{
id: 4,
title: 'company',
parent: 2
}
]
Je voudrais la convertir en une structure de l'arborescence comme ceci:
[
{
id: 1,
title: 'home',
parent: null
},
{
id: 2,
title: 'about',
parent: null,
children: [
{
id: 3,
title: 'team',
parent: 2
},
{
id: 4,
title: 'company',
parent: 2
}
]
]
J'espérais une réutilisables fonction que je peux appeler à l'encontre d'un arbitraire de la liste à tout moment. Quelqu'un connais un bon moyen de gérer cela? De l'aide ou des conseils seraient grandement appréciés!
double possible de la Façon la plus efficace de construire un arbre à partir d'une structure plane?
double possible de Générer (multi-niveaux) flare.format de données json à partir de télévision json
double possible de Générer (multi-niveaux) flare.format de données json à partir de télévision json
OriginalL'auteur TruMan1 | 2014-03-13
Vous devez vous connecter pour publier un commentaire.
Violon
Gardez à l'esprit que la réponse ci-dessus utilise deux boucles, et donc pourrait être améliorée. Puisque je ne pouvais pas trouver un mnp module qui implémente un O(n) solution, j'ai créé la suivante (unité testée, 100% de couverture de code, seulement 0,5 kb et comprend typings. Peut-être que ça aide quelqu'un: npmjs.com/package/performant-array-to-tree
O(n). Ma solution est également
O(n)
. J'avoue que je n'allais pas le record de vitesse. Si ma version ou la vôtre est plus rapide peut être mesurée (deux simples boucles vs un complexe), mais je ne peux pas dire a priori ce qui est plus rapide. Cependant, leur complexité temporelle est exactement la même chose.merci pour vos pensées. Vous avez raison de leur complexité temporelle est égale. J'ai posté le lien juste au cas où quelqu'un est intéressé par une mise en œuvre efficace dans un package npm.
OriginalL'auteur Amadan