项目中遇到一个需求是左侧树形结构有不同类型的数据,产品要求只显示某一个类型的数据,这样我就就要对从后端返回的属性数据进行递归过滤;
树形结构数组如下:
简单一点,我就写两层树形结构!
const arrData = [
{
id:'0001',
name:'张三',
type:'category',
children:[
{ id:'00011',
name:'麻子',
type:'category'
children:[]
},
{ id:'00012',
name:'张龙',
type:'code'
children:[]
},
]
},
{
id:'0002',
name:'l李四',
type:'category'
children:[]
},
{
id:'0003',
name:'王二',
type:'code'
children:[]
},
]
写一个只去type为category的递归函数
filterData (arr) {
const newArr = arr.filter(item => item.type == 'category')
return newArr.map(item => {
if (item.children) {
item.children = this.filterData (item.children)
}
return item
})
}
const newArr = this.filterData (arrData ) //得到的是过滤后的新数据
得到的新树形数据结构如下:
newArr = [
{
id:'0001',
name:'张三',
type:'category',
children:[
{ id:'00011',
name:'麻子',
type:'category'
children:[]
},
]
},
{
id:'0002',
name:'l李四',
type:'category'
children:[]
},
]