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 ...
随机推荐
- 动力节点—day06
常用类 String String表示字符串类型,属于引用数据类型,不属于基本数据类型 在Java中随便使用双引号括起来的都是String对象,例如"abc"."def& ...
- Java 进阶P-6.6+P-7.1
接口设计模式 接口 接口是纯抽象类 所有的成员函数都是抽象函数 所有的成员变量都是public static final 接规定了长什么样,但是不管里面有什么 实现接口 类用extends,接口用im ...
- continue语句-死循环
continue语句 continue 使用场景:结束本次循环,继续下一次的循环 public static void main(String[] args) { for (int i = 1; i ...
- Grafana 系列文章(八):Grafana Explore 中的 Inspector
️URL: https://grafana.com/docs/grafana/latest/explore/explore-inspector/ Description: Explore 中的检查器 ...
- openstacksdk快速上手
hello,大家好,这里是费冰,今天是大年初六,唉,这么早就被迫营业了. 那么今天来解读一波openstacksdk. Openstacksdk是什么 其实我很难说明一个是什么的问题.如果你使用过py ...
- 【LeetCode】三数之和+四数之和(双指针)
之所以放在一起是因为,"四数之和"的解题方法基本与"三数之和"一致 由此我们可以推出n数之和的解法 本质上,我们只是使用双指针的方法降低此类问题的时间复杂度 当 ...
- liinux-目录、文件结构及相关命令
1.前期必备知识 1.命令提示符 [root@max001 ~]#:root表示用户信息,max001表示主机名称. [root@max001 ~]%:普通用户结尾是$符号. 2.命令格式规范(语法规 ...
- 真正“搞”懂HTTP协议14之HTTP3
我们前一篇学习了HTTP/2,相比于HTTP/1,HTTP/2在性能上有了大幅的改进,但是HTTP/2因为底层还是基于TCP协议的,虽然HTTP/2在应用层引入了流的概念,利用多路复用解决了队头阻塞的 ...
- vue组件的对象式写法,vue中的h函数
render:将虚拟dom转为真实dom h函数:创建的是vnode,也可以成为createVnode函数 语法:h(元素名称 ,这个元素的数据,子集) 第一个参数:可以为一个html标签,一个组件, ...
- 调用后台接口实现Excel导出功能以及导出乱码问题解决
实现效果 在导出表格数据的时候,通常分为两种情况 页面列表数据导出 接口返回数据导出 这里主要介绍接口返回数据导出,关于页面的列表数据导出,请看另一篇:vue3+element表格数据导出 接口返回数 ...