ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

递归方法整合

2020-02-24 09:07:52  阅读:149  来源: 互联网

标签:node 递归 idVal children treeAry 整合 else 方法 id


 1 /*菜单树下拉,禁止选择当前项及其子项,以防止死循环*/
 2 /*item表示递归树,compID表示比对的需要禁止选择的项ID*/
 3 // 实例:编辑情况下,禁止选择当前节点及其子节点
 4 export function diGuiTreeEdit(item, compID) {
 5   const dataSor = item
 6   let treeAry = []
 7   for (let i in dataSor) {
 8     const v = dataSor[i]
 9     let node = {}
10     if (v === null || v === undefined) { }
11     else {
12       if (v.children && v.children.length > 0) {
13         if (v.id == compID) {
14           node.isDisabled = true
15         } else {
16           node.isDisabled = false
17         }
18         node.id = v.id
19         node.label = v.label
20         node.name = v.name
21         node.children = diGuiTreeEdit(v.children, compID)
22         treeAry.push(node)
23       } else {
24         if (v.id == compID) {
25           node.isDisabled = true
26         } else {
27           node.isDisabled = false
28         }
29         node.id = v.id
30         node.label = v.label
31         node.name = v.name
32         treeAry.push(node)
33       }
34     }
35   }
36   return treeAry
37 }

 

 1 // 递归遍历根据id,找到对应的node节点,得到一个结果。treeAry主要是用于递归push的值
 2 // item表示递归树,id表示已知的值的在对象中的key,idVal表示已知的数值。treeAry用于存放每一步遍历得出的值
 3 // 例如根据id在递归树中获取其名称
 4 export function rspTreeNodeFormID(item,id,idVal, treeAry=[]) {
 5   const dataSor = item
 6   for (let v of dataSor) {
 7     if (v === null || v === undefined) { }
 8     else {
 9       if (v.children && v.children.length > 0) {
10         if (v[id] == idVal) {
11           treeAry.push(v)
12           break
13         } else {
14           rspTreeNodeFormID(v.children, id, idVal,treeAry )
15         }
16       } else {
17         if (v[id] == idVal) {
18           treeAry.push(v)
19           break
20         }
21       }
22     }
23   }
24   return treeAry
25 }


 1 // 递归遍历根据id,找到对应的node节点下的data属性里面的对应的值。treeAry主要是用于递归push的值
 2 // 和方法rspTreeNodeFormID实现的功能类似
 3 export function rspTreeNodeDataFormID(item,firstAttr,secAttr,idVal, treeAry=[]) {
 4   const dataSor = item
 5   for (let v of dataSor) {
 6     if (v === null || v === undefined) { }
 7     else {
 8       if (v.children && v.children.length > 0) {
 9         if (v[firstAttr] && v[firstAttr][secAttr] && v[firstAttr][secAttr] == idVal) {
10           treeAry.push(v)
11           break
12         } else {
13           rspTreeNodeDataFormID(v.children, firstAttr,secAttr, idVal,treeAry )
14         }
15       } else {
16         if (v[firstAttr] && v[firstAttr][secAttr] && v[firstAttr][secAttr] == idVal) {
17           treeAry.push(v)
18           break
19         }
20       }
21     }
22   }
23   return treeAry
24 }

 

标签:node,递归,idVal,children,treeAry,整合,else,方法,id
来源: https://www.cnblogs.com/luoxuemei/p/12171780.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有