Maison > Questions et réponses > le corps du texte
Il y a un morceau de JSON, comme suit :
Selon le niveau de l'arborescence, il s'agit du niveau 3. Je souhaite maintenant revenir aux 2 premiers niveaux et supprimer le 3ème niveau. Comment puis-je utiliser le code javascript pour y parvenir ?
Structure originale :
[{
'id': 1,
'title': 'node1',
'nodes': [
{
'id': 11,
'title': 'node1.1',
'nodes': **[
{
'id': 111,
'title': 'node1.1.1',
'nodes': []
}**
]
},
{
'id': 12,
'title': 'node1.2',
'nodes': []
}
]
}, {
'id': 2,
'title': 'node2',
'nodes': [
{
'id': 21,
'title': 'node2.1',
'nodes': []
},
{
'id': 22,
'title': 'node2.2',
'nodes': []
}
]
}, {
'id': 3,
'title': 'node3',
'nodes': [
{
'id': 31,
'title': 'node3.1',
'nodes': []
}
]
}]
Structure traitée :
[{
'id': 1,
'title': 'node1',
'nodes': [
{
'id': 11,
'title': 'node1.1',
**'nodes': []**
},
{
'id': 12,
'title': 'node1.2',
'nodes': []
}
]
}, {
'id': 2,
'title': 'node2',
'nodes': [
{
'id': 21,
'title': 'node2.1',
'nodes': []
},
{
'id': 22,
'title': 'node2.2',
'nodes': []
}
]
}, {
'id': 3,
'title': 'node3',
'nodes': [
{
'id': 31,
'title': 'node3.1',
'nodes': []
}
]
}]
巴扎黑2017-05-19 10:25:17
Il est plus pratique d'utiliser la récursivité pour les opérations sur les arbres
profondeur est le nombre de couches réservées. Notez que le nœud de cette couche s'appelle 'id': 1,
.
function removeNode (root, depth) {
if (typeof root !== 'object' || typeof depth !== 'number' || !Array.isArray(root.nodes)) { return root }
if (depth < 1) { return {} }
if (depth === 1) {
root.nodes = []
} else {
root.nodes.forEach(node => {
removeNode(node, depth - 1)
})
}
return root
}
世界只因有你2017-05-19 10:25:17
Vous pouvez simplement parcourir les deux niveaux de json et réassembler un nouveau json.