Arbre de construction de tableau de tableau plat en javascript

J'ai un complexe fichier json que j'ai à gérer avec javascript pour le faire hiérarchique, pour ensuite construire un arbre.
Chaque entrée du json a :
id : un identifiant unique,
parentId : l'id du nœud parent (qui est 0 si le nœud est une racine de l'arbre)
niveau : le niveau de profondeur dans l'arbre

Les données json est déjà "ordonné". Je veux dire que l'entrée sera au-dessus de lui-même un nœud parent, frère ou nœud, et en vertu de lui-même un nœud enfant ou un frère nœud.

D'entrée :

{
"People": [
{
"id": "12",
"parentId": "0",
"text": "Man",
"level": "1",
"children": null
},
{
"id": "6",
"parentId": "12",
"text": "Boy",
"level": "2",
"children": null
},
{
"id": "7",
"parentId": "12",
"text": "Other",
"level": "2",
"children": null
},
{
"id": "9",
"parentId": "0",
"text": "Woman",
"level": "1",
"children": null
},
{
"id": "11",
"parentId": "9",
"text": "Girl",
"level": "2",
"children": null
}
],
"Animals": [
{
"id": "5",
"parentId": "0",
"text": "Dog",
"level": "1",
"children": null
},
{
"id": "8",
"parentId": "5",
"text": "Puppy",
"level": "2",
"children": null
},
{
"id": "10",
"parentId": "13",
"text": "Cat",
"level": "1",
"children": null
},
{
"id": "14",
"parentId": "13",
"text": "Kitten",
"level": "2",
"children": null
},
]
}

Résultat attendu :

{
"People": [
{
"id": "12",
"parentId": "0",
"text": "Man",
"level": "1",
"children": [
{
"id": "6",
"parentId": "12",
"text": "Boy",
"level": "2",
"children": null
},
{
"id": "7",
"parentId": "12",
"text": "Other",
"level": "2",
"children": null
}   
]
},
{
"id": "9",
"parentId": "0",
"text": "Woman",
"level": "1",
"children":
{
"id": "11",
"parentId": "9",
"text": "Girl",
"level": "2",
"children": null
}
}
],    
"Animals": [
{
"id": "5",
"parentId": "0",
"text": "Dog",
"level": "1",
"children": 
{
"id": "8",
"parentId": "5",
"text": "Puppy",
"level": "2",
"children": null
}
},
{
"id": "10",
"parentId": "13",
"text": "Cat",
"level": "1",
"children": 
{
"id": "14",
"parentId": "13",
"text": "Kitten",
"level": "2",
"children": null
}
}
]
}
  • Il y a plusieurs façons de le faire, avez-vous essayer quelque chose encore?
  • Je suppose qu'un parentId de 0 signifie que l'on n'est pas parent de l'id et devrait être le sommet de la couche.
  • Habituellement, ce genre de tâches requises connaissance approfondie des objets. Bonne question
InformationsquelleAutor Franck | 2013-08-02