**
js实现layui搜索树数据构造
**
其中搜索框的实现需求:
1、搜索关键字为模糊搜索
2、展示关键字命中的目标节点及所有子节点和所有父节点
实现思路:还是通过递归遍历所有子节点来判断是否包含字符串,末节点若不包含则删除自身,这样上一级父节点就变成了末节点,再进行一样的判断即可,主要工作量在于对js数组和对象的删除需要有一定的理解,实现代码如下:
var labCondition = '搜索关键字';
//过滤搜索条件
function reFilter(array) {
for (var i=0; i<array.length; i++) {
var data = array[i];
if (data.title.indexOf(labCondition) > -1) {
continue;
}
if (data.children && data.children.length > 0) {
reFilter(data.children);
}
if (!((data.children && data.children.length > 0)) && data.title.indexOf(labCondition)==-1) {
array.splice(i, 1);
i--;
}
}
}
//将源树形数据data放进去执行后就可以直接使用layui.tree渲染了
reFilter(data);
tree.render({
elem: '#xxx',
data: data,
id: 'xxx',
showLine: false, //是否开启连线
accordion: true, //是否开启手风琴模式
showCheckbox: false, //是否显示复选框
click:function(item){}
});
以上转发自 简书- 二枚目