JS递归如何模糊查询树形结构数据,根据数据中的某一个字段值,模糊匹配
直接拿去使用就行
function filterTreeLabel(arr, label) {let result = []arr.forEach((item) => {// if (String(item.POBJECT_NAME).toLowerCase().indexOf(label)!=-1) {if (String(item.POBJECT_NAME).toLowerCase().includes(label)) {result.push(item);} else {if (item.children && item.children.length) {let children = filterTreeLabel(item.children, label);console.log(children,'---->>>zhid',item);let obj = {...item,children,};console.log(obj,'关键点:拼接成一个新的的数据对象');if (children && children.length) {result.push(obj);}}}});return result;}
// 模糊查询树形结构数据
function filterTreeByFilterLabel(arr, label,searchProps) {let result = []arr.forEach((item) => {// if (String(item.POBJECT_NAME).toLowerCase().indexOf(label)!=-1) {let searchProps = ['POBJECT_NAME','POBJECT_DESC']//多个column字段查询亦可以if(searchProps.some(key => String(item[key]).toLowerCase().indexOf(label) > -1)){// if (String(item.POBJECT_NAME).toLowerCase().includes(label)) {result.push(item);} else {if (item.children && item.children.length) {let children = filterTreeByFilterLabel(item.children, label,searchProps);let obj = {...item,children,};if (children && children.length) {result.push(obj);}}}});return result;
}


就问你牛不牛逼
// JS查询树形结构数据,根据id查询该节点和所有父级节点
function getParentsById(list, id) {for (let i in list) {if (list[i].ID === id) {//查询到就返回该数组对象return [list[i]]}if (list[i].children) {let node = getParentsById(list[i].children, id)if (node !== undefined) {//查询到把父节点连起来return node.concat(list[i])}}}}
获取当前节点的的叶子节点数据
function getCurrentNodeAllChildren(node) {let result = [node]; // 将当前节点添加到结果数组中if (node.children) {for (let child of node.children) {result = result.concat(getCurrentNodeAllChildren(child)); // 递归获取所有子孙节点}}return result;
}
const $table = tableRef.value;
let list = getCurrentNodeAllChildren(row)
$table.setTreeExpand(list,true)