Dans le développement de Vue.js, il est souvent nécessaire d'utiliser des données d'arborescence récursives pour afficher les vues. Dans ce processus, nous devrons peut-être trouver des objets nœuds spécifiques et effectuer les opérations correspondantes. Cet article présentera une méthode d'utilisation de la récursivité pour la recherche de données arborescentes pour répondre à ce besoin.
1. Structure des données
Avant d'introduire la méthode, jetons d'abord un coup d'œil à la structure de données arborescente commune :
{ "label": "Node 1", "children": [ { "label": "Node 1-1", "children": [] }, { "label": "Node 1-2", "children": [ { "label": "Node 1-2-1", "children": [] } ] } ] }, { "label": "Node 2", "children": [] }
La structure de données ci-dessus représente une simple structure arborescente imbriquée à deux niveaux, qui contient un nœud racine et plusieurs nœuds enfants.
2. Méthode de recherche
Nous espérons trouver des objets nœuds qui répondent aux conditions de l'arborescence grâce à des règles spécifiques. La méthode de recherche spécifique est la suivante :
Tout d'abord, nous devons définir une méthode qui accepte deux paramètres. Le premier paramètre est les données de la structure arborescente à rechercher ; le deuxième paramètre est un objet représentant les conditions de recherche. Le format de cet objet est le suivant :
{ key: "label", value: "Node 1-2-1" }
Parmi eux, key
représente le nom de l'attribut à faire correspondre, et value
représente la valeur de l'attribut à faire correspondre. key
表示要匹配的属性名,value
表示要匹配的属性值。
然后,我们可以使用递归的方式,遍历所有的节点,查找符合条件的节点。具体实现方法如下:
findByCondition(data, condition) { let result = null; data.forEach(node => { if (node[condition.key] === condition.value) { result = node; } else if (node.children) { result = this.findByCondition(node.children, condition); } if (result) { return; } }); return result; },
递归的实现方式是不断地遍历每一个节点,如果当前节点符合条件,那么返回当前节点,否则继续递归查找子节点。
三、使用示例
接下来,我们来看一个使用示例,以查找数据结构中 label
值为 Node 1-2-1
let data = [ { "label": "Node 1", "children": [ { "label": "Node 1-1", "children": [] }, { "label": "Node 1-2", "children": [ { "label": "Node 1-2-1", "children": [] } ] } ] }, { "label": "Node 2", "children": [] } ]; let condition = { key: "label", value: "Node 1-2-1" }; let result = this.findByCondition(data, condition); console.log(result);
label
est Node 1-2-1
dans la structure des données :🎜{ "label": "Node 1-2-1", "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!