js树搜索框查询所有匹配节点及父节点(纯js实现)
// 搜索框输入查询树节点(纯前台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
// }
js树搜索框查询所有匹配节点及父节点(纯js实现)的更多相关文章
- chosen.jquery.js 搜索框只能从头匹配的解决思路+方法
chosen.jquery.js 搜索框只能从头匹配的解决思路+方法 心急者请直接看下方 总结 ,由于本问题未能找到直接答案,所以只能通过修改源码解决.故将修改源码思路贴出来供大家参考,在遇到其他改源 ...
- C# 动态生成word文档 [C#学习笔记3]关于Main(string[ ] args)中args命令行参数 实现DataTables搜索框查询结果高亮显示 二维码神器QRCoder Asp.net MVC 中 CodeFirst 开发模式实例
C# 动态生成word文档 本文以一个简单的小例子,简述利用C#语言开发word表格相关的知识,仅供学习分享使用,如有不足之处,还请指正. 在工程中引用word的动态库 在项目中,点击项目名称右键-- ...
- 实现DataTables搜索框查询结果高亮显示
DataTables是封装好的HTML表格插件,丰富了HTML表格的样式,提供了即时搜索.分页等多种表格高级功能.用户可以编写很少的代码(甚至只是使用官方的示例代码),做出一个漂亮的表格以展示数据.关 ...
- 使用pycharm搜索框和正则表达式匹配内容
使用pycharm搜索框和正则表达式匹配内容原创薯饼__ 最后发布于2019-03-04 19:28:53 阅读数 660 收藏展开有时候我们要在爬虫网站中匹配各种各样的文本块,以获取需要的信息,每一 ...
- python selenium 时间搜索框查询和日期大小比较
在做selenium自动化的时候遇到 时间搜索框查询(如下图)并比较查询结果是否在输入的时间之类. 首先,第一步要做的就是选择时间,并获取到所选时间的文本信息 如上图所示,获取到的时间搜索框并没有文本 ...
- (Elementui) el-tree 中英文过滤以及搜索到父子显示子节点,搜索到子节点显示父节点(filter-node-method)
案例下载:https://gitee.com/tudoumlp/just1.git (vue-ele-demo) 在项目中,会遇到树节点的搜索,中文和英文搜索,以及搜索到父节点匹配的时候同步显示该 ...
- 树形下拉框ztree、获取ztree所有父节点,ztree的相关方法
参考:jQuery树形控件zTree使用小结 需求 添加.修改的终端需要选择组织,组织是多级架构(树状图显示). 思路 1.因为下拉框需要树状图显示,所以排除使用select做下拉框,改用input ...
- MySQL递归查询树状表的子节点、父节点具体实现
mysql版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算 ...
- JS获取子节点、父节点和兄弟节点的方法实例总结
转自:https://www.jb51.net/article/143286.htm 本文实例讲述了JS获取子节点.父节点和兄弟节点的方法.分享给大家供大家参考,具体如下: 一.js获取子节点的方式 ...
- SQL 用;with 由所有的子节点查询到树结构中所有父节点
1.所有的子节点查询到树结构中所有父节点 RETURNS @Tree Table(PID )) as begin --DECLARE @ID VARCHAR() --SET @ID = ' ;with ...
随机推荐
- ionic+vue+capacitor系列笔记--03项目使用Native插件
话不多说,直接上代码 下载依赖 npm install @capacitor/camera 添加权限配置代码到安卓文件夹里的 AndroidManifest.xml <uses-permissi ...
- 使用iframe引入文件后设置响应式宽高以及其他问题解决;
第一 :引入iframe后背景色解决: 需要先设置 被引入文件的body样式 第二:滚动以及其他样式需要设置,span是为了小屏准备的,处理小屏时候元素距离顶部高度问题: 这个是span 的样式 然后 ...
- 实操好用~~~~~antd 中 Table表格动态合并~~~
我写了两种方法 一种是前端处理数据渲染 一种是后端处理数据渲染 数据结构略有不同 下面上代码 <template> <page-view :title="title&quo ...
- Grafana 系列文章(五):Grafana Explore 查询管理
️URL: https://grafana.com/docs/grafana/latest/explore/query-management/ Description: Explore 中的查询管理 ...
- Web 页面如何实现动画效果
Web 页面可以使用多种方式实现动画效果,其中最常用的有两种: CSS 动画:通过 CSS 中的 transition 和 animation 属性来实现动画效果.CSS 动画实现起来简单,性能消耗小 ...
- 【LeetCode字符串#06】KMP巩固练习:重复子串
重复的子字符串 力扣题目链接(opens new window) 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: ...
- 分布式机器学习:异步SGD和Hogwild!算法(Pytorch)
1 导引 我们在博客<分布式机器学习:同步并行SGD算法的实现与复杂度分析(PySpark)>和博客<分布式机器学习:模型平均MA与弹性平均EASGD(PySpark) >中介 ...
- pycharm软件的基本使用、python的注释语法、变量与常量、变量的命名风格、垃圾回收机制、数据类型、数据类型之整型、数据类型之浮点型
一.pycharm软件的基本使用 修改主题背景 修改字体大小 切换解释器 如何新建python文件 创建后缀是py的文件 注意:pycharm的语言 一定要使用英文的 二.python语法注释 (1) ...
- UBUNTU18.04安装使用ORB-SLAM2
1.下载: git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 2.依赖项: sudo apt install autotools ...
- 躬身入局,干货分享,2023年春招后端技术岗(Python)面试实战教程,Offer今始为君发
早春二月,研发倍忙,杂花生树,群鸥竟飞.为什么?因为春季招聘,无论是应届生,还是职场老鸟,都在摩拳擦掌,秣马厉兵,准备在面试场上一较身手,既分高下,也决Offer,本次我们打响春招第一炮,躬身入局,让 ...