let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);
// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}
// 交集
let intersect = new Set([...a].filter(x => b.has(x)));//ES6
var intersect = new Set([...a].filter(function(x){
return b.has(x);
}))
// set {2, 3}
// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}
ztree 模糊搜索 子节点没有符合的时候同时隐藏父节点
var hiddenNodes=[];
var hiddenNodesFinal=[];
function queryData(){
var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
var _keywords=$("#userName").val();
var shownNodes=[];
var parentNodesSet=new Set();
//显示上次搜索后被隐藏的结点
zTreeObj.showNodes(hiddenNodesFinal);
//查找不符合条件的叶子节点
function filter(node){
if(node.name.indexOf(_keywords)!=-1){
shownNodes.push(node);
return false;
}
return true;
};
//获取不符合条件的叶子结点
hiddenNodes=zTreeObj.getNodesByFilter(filter);
//放到父节点集合中
for(var i=0;i<shownNodes.length;i++){
addParentNodes(shownNodes[i]);
}
//递归找出所有父节点放到集合中
function addParentNodes(node){
if(node!=null){
var parentNode=node.getParentNode();
if(parentNode!=null){
console.log("parentNode:"+parentNode);
parentNodesSet.add(parentNode);
addParentNodes(parentNode);
}
}else{
return;
}
}
//隐藏节点与父节点求差集找出最终应该隐藏的节点
var a=new Set(hiddenNodes);
var b=parentNodesSet;
var differenceABSet = new Set([...a].filter(x => !b.has(x)));
//集合转数组
hiddenNodesFinal = Array.from(differenceABSet);
//隐藏不符合条件的叶子结点
zTreeObj.hideNodes(hiddenNodesFinal);
}