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!

OriginalL'auteur TruMan1 | 2014-03-13