//处理前数据
deptTree: [
{
dwdm: '5000000',
dwjc: '交警大队',
children: [
{
dwdm: '"5000100"',
dwjc: '一大队'
},
{
dwdm: '"5000200"',
dwjc: '二大队'
}
]
},
{
dwdm: '5006000',
dwjc: '交警二支队'
}
],
treeDwdmArr: [
'5000000',
'5000100'
],
dwdmString:‘5000100’
1、过滤出某条数据
filterDeptTree(tree) {
let res = null
for (let i = 0; i < tree.length; i++) {
if (this.dwdmString === (tree[i].dwdm)) {
res = tree[i]
break
} else if (tree[i].children && tree[i].children.length) {
const childRes = this.filterDeptTree(tree[i].children)
if (childRes) {
res = childRes
break
}
}
}
return res
},
2、过滤出不满条件的数据--结果为树结构
//方法核心
filterDeptTree(treeArr) {
const newArr = []
treeArr.forEach(ele => {
if (this.treeDwdmArr.includes(ele.dwdm)) {
newArr.push(ele)
if (ele.children && ele.children.length) {
this.filterDeptTree(ele.children)
}
}
})
newArr.forEach(ele => {
treeArr.push(ele)
})
for (let i = 0; i < treeArr.length; i++) {
treeArr.shift()
}
},
处理前:
处理后:
3、模糊查询时过滤数据
// 过滤节点
filterNode(value, data, node) {
if (!value) return true
return this.filterNodeAndParent(value, data, node)
},
// 递归检测父元素或自己是否符合条件-只能查找子节点
filterNodeAndParent(value, data, node) {
if (node.level === 1) {
return node.data.name.indexOf(value) !== -1
} else if (data.level !== 1) {
// 判断自己是否符合条件
if (node.data.name.indexOf(value) !== -1) {
return true
} else { // 否则查找父级
return this.filterNodeAndParent(value, node.data, node.parent)
}
}
},