tree获取模糊筛选 设置默认展开项 不展开最后一级
let arr = [
{
title: '你好吗?',
id:1,
children: [
{
title: '很好啊',
id:2,
children: [
{
title: '是吗',
id:3,
children: null
}
]
},
{
title: '是吗',
id:4,
children: null
}
]
},
{
title: '卡卡卡',
id:5,
children: [
{
title: '非常好芬',
id:6,
children: null
}
]
},
{
title: '第三方的',
id:7,
children: null
}
];
const rebuildData = (value, arr) => {
if (!arr) {
return []
}
let newarr = [];
arr.forEach(element => {
if (element.title.indexOf(value) > -1) {
const ab = rebuildData(value, element.children);
const obj = {
...element,
children: ab
}
newarr.push(obj);
} else {
if (element.children && element.children.length > 0) {
const ab = rebuildData(value, element.children);
const obj = {
...element,
children: ab
};
if (ab && ab.length > 0) {
newarr.push(obj);
}
}
}
});
return newarr;
};
console.log(rebuildData('好', arr));
let newData=JSON.parse(JSON.stringify(rebuildData('好', arr)))
let allIds=[]
let noCheckedIds=[]
let ids=[]
function a(data){
data.forEach(item=>{
allIds.push(item.id)
if(item.children && item.children.length){
a(item.children)
}else{
noCheckedIds.push(item.id)
}
})
}
a(newData);
ids=allIds.filter(item=>!noCheckedIds.includes(item));
console.log('所有id',allIds,'最后一级id',noCheckedIds,'需要展开的id',ids)