对树形数据进行过滤遍历(广度优先)
// 假数据
/**
isDeleted: 0为未删除 1为已删除
对数据进行过滤遍历,判断已删除和未删除的显示
全部显示已删除,或者全部显示未删除
*/
data:[
{
name:'玛卡巴卡',
isDeleted:0,
children:[
{
name:'一股辟谷',
isDeleted:1,
children:[
{...}
]
}
]
},
{
...
}
]
/*
使用forEach循环数组,
*/
const deepsee = function (arr){
// 建立新的数组进行接收
let newArr = []
// 对传递进来的树形数组进行forEach循环遍历
arr.forEach(item => {
// 进行判断是否为已删除
if(item.isDeleted == 1){
// 该数据为已删除 push进新建立的数组
newArr.push(item)
}else{
//对不是已删除判断有没有子集数据,
if(item.children && Array.isArray(item.children)){
/*
存在子集后,进行递归
建立新的数组接收递归后的值
*/
let chirlList = deepsee(item.children)
// 通过解构赋值将接收到的递归的值推入到新的数组
newArr.push(...chirlList)
}
}
})
// 返回新的数组
return newArr
}