Vue est un framework frontal populaire dans lequel de nombreuses opérations sont basées sur des tableaux. Lorsque nous devons afficher des données de structure arborescente complexes dans Vue, nous devons convertir le tableau en données de structure arborescente pour faciliter notre affichage et notre fonctionnement sur la page. Cet article présentera la méthode d'implémentation de conversion du tableau Vue en structure arborescente.
Avant la conversion, nous devons d'abord déterminer la structure des données que nous voulons convertir. Cet article utilise les données suivantes. structure à titre d'exemple :
let dataArray = [ { id: 1, name: 'parent1', parentId: 0 }, { id: 2, name: 'parent2', parentId: 0 }, { id: 3, name: 'child1', parentId: 1 }, { id: 4, name: 'child2', parentId: 1 }, { id: 5, name: 'child3', parentId: 2 }, { id: 6, name: 'grandchild1', parentId: 3 }, { id: 7, name: 'grandchild2', parentId: 3 } ];
Où, chaque élément contient un identifiant, un nom et l'identifiant de son élément parent. Cette structure de données peut être utilisée pour représenter une structure arborescente avec une relation parent-enfant.
Ensuite, nous devons implémenter une méthode de conversion. Selon notre structure de données, nous pouvons définir une classe de nœuds :
class Node{ constructor(data){ this.id = data.id; this.name = data.name; this.parentId = data.parentId; this.children = []; } }
Parmi eux, id, name, parentId représentent l'identifiant, le nom et l'identifiant du nœud parent, et les enfants représentent la collection de nœuds enfants sous le nœud.
Ensuite, nous créons le nœud racine basé sur le tableau d'origine :
function buildTree(dataArray) { let root = new Node({ id: 0, name: 'root', parentId: null }); // 循环处理每个节点 for(let i=0;i<dataArray.length;i++){ let data = dataArray[i]; let node = new Node(data); // 添加到父节点下 let parent = findNode(root, data.parentId); parent.children.push(node); } return root.children; } // 根据id查找节点 function findNode(node, targetId) { if (node.id === targetId) { return node; } else { for (let i = 0; i < node.children.length; i++) { let result = findNode(node.children[i], targetId); if (result !== null) { return result; } } return null; } }
Dans la méthode buildTree, nous créons d'abord un nœud racine, puis nous parcourons le dataArray pour créez chaque nœud et ajoutez-le à la propriété children de son nœud parent.
La méthode findNode est utilisée pour trouver le nœud avec l'identifiant spécifié Lorsque nous rencontrons le nœud lors d'une boucle, nous l'ajoutons à l'attribut children de son nœud parent.
Nous pouvons maintenant tester notre méthode :
let treeData = buildTree(dataArray); console.log(JSON.stringify(treeData));
Les résultats de sortie sont les suivants : # 🎜 🎜#
[ { "id": 1, "name": "parent1", "parentId": 0, "children": [ { "id": 3, "name": "child1", "parentId": 1, "children": [ { "id": 6, "name": "grandchild1", "parentId": 3, "children": [] }, { "id": 7, "name": "grandchild2", "parentId": 3, "children": [] } ] }, { "id": 4, "name": "child2", "parentId": 1, "children": [] } ] }, { "id": 2, "name": "parent2", "parentId": 0, "children": [ { "id": 5, "name": "child3", "parentId": 2, "children": [] } ] } ]
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!