// 搜索框输入查询树节点(纯前台js)

//name 搜索框输入的值;

//wgObj.dwtreeDateAll  为树 的全量数据

// titleArr        与输入框匹配的节点数组

//arrTarget        未去重的目标节点数组

//wgObj.dwtreeDate   已去重的目标节点数组

//树数据结构

// [{
// "id": "ff8080814c972f3f014c981aae1a1501",
// "parentId": "ff8080814c972f3f014c981aae0f14ff",
// "title": "电力调度控制中心"
// },
// {
// "id": "ff8080814c972f3f014c981aae5c150d",
// "parentId": "ff8080814c972f3f014c981aae1a1501",
// "title": "继电保护室"
// },
// {
// "id": "ff8080814c972f3f014c981aae67150f",
// "parentId": "ff8080814c972f3f014c981aae1a1501",
// "title": "方式计划室"
// },
// {
// "id": "ff8080814c972f3f014c981aae7e1513",
// "parentId": "ff8080814c972f3f014c981aae0f14ff",
// "title": "安全监察质量部(保卫部)"
// },
// {
// "id": "ff80808157b555570157d538316a1dd1",
// "parentId": "ff8080814c972f3f014c981aa9e61441",
// "title": "客户服务中心"
// }
// ]

////////输入框搜索时调用的方法
function SearchTreeByName(name) {
//先获取与输入框匹配的节点数组
var titleArr = [];
wgObj.dwtreeDateAll.forEach(function (o) {
if (o.title.lastIndexOf(name) != -1) titleArr.push(o);
});
//递归检索节点(子节点符合父节点不符合也需要带上父节点)
var arrTarget = [];
for (var i = 0; i < titleArr.length; i++) {
var forFn = function (id, name) {
for (var j = 0; j < wgObj.dwtreeDateAll.length; j++) {
if (id == wgObj.dwtreeDateAll[j].id) {
arrTarget.push(wgObj.dwtreeDateAll[j]);
forFn(wgObj.dwtreeDateAll[j].parentId, name);
break
}
}
};
forFn(titleArr[i].id, titleArr[i].title);
}
//递归完之后去重取目标树数据
wgObj.dwtreeDate = [];
for (var i = 0; i < arrTarget.length; i++) {
var flag = 1;
for (var j = 0; j < wgObj.dwtreeDate.length; j++) {
if (wgObj.dwtreeDate[j].id == arrTarget[i].id && wgObj.dwtreeDate[j].parentId == arrTarget[i].parentId) {
flag = 0;
}
}
flag === 1 ? wgObj.dwtreeDate.push(arrTarget[i]) : false;
}
    return wgObj.dwtreeDate;
}
//单纯的获取当前节点的所有父节点方法(递归)
// function familyTree (arr1, id) {
// var temp = []
// var forFn = function (arr, id) {
// for (var i = 0; i < arr.length; i++) {
// var item = arr[i]
// if (item.id === id) {
// temp.push(item)
// forFn(arr1, item.parentId)
// break
// } else {
// if (item.children) {
// forFn(item.children, id)
// }
// }
// }
// }
// forFn(arr1, id)
// return temp
// }

最新文章

  1. C++中的4个类型转换关键字
  2. ajax请求后弹开新页面被浏览器拦截
  3. SQL SERVER 2008中输入汉字乱码的问题
  4. iOS 国际化
  5. mybatis 打印日志log4j.properties
  6. MongoDB - The mongo Shell, Data Types in the mongo Shell
  7. STM32内存映射
  8. MySQL 5.6 for Windows 解压缩版配置安装(转)
  9. 移动页面缩放方法之(一)控制meta法
  10. [饭后算法系列] &quot;头尾移动&quot; 排序列表
  11. codevs 1256 打鼹鼠 LIS
  12. 开始Java学习(Java之负基础实战)
  13. python之socket模块
  14. 1.求链表中的倒数第K个节点
  15. 魔力Python——对象
  16. (原创)odoo解决方案---接收以及回复外部邮件
  17. HttpTool.java 【暂保留】
  18. Apache Roller 5.0.3 XXE漏洞分析
  19. spring initializr 创建项目时,依赖对应的 artifactId
  20. javascript创建对象之构造函数模式(二)

热门文章

  1. Coolify系列-解决WARNING: IPv4 forwarding is disabled. Networking will not work.以及开启防火墙端口
  2. 数据结构-详解优先队列的二叉堆(最大堆)原理、实现和应用-C和Python
  3. 力扣---45. 跳跃游戏 II
  4. 我这.NET菜鸟,用它开发RabbitMQ消息队列后,竟被老板一夜提拔为架构师
  5. springcloud11 spring cloud config
  6. js实现一二级域名共享cookie
  7. 基于Kali Linux的渗透测试工具-Discover脚本
  8. JZOJ 7392. 【2021.11.17NOIP提高组联考】数 (ds)
  9. Vladik and fractions
  10. CCRD_TOC_2008年第4期