怎么把这个data1数组改造成data2数组,相当于过滤其中isShow=false的对象?
let data1=[
{
isShow:true,
children:[
{
isShow:true,
nodeName:'天天下级文件夹',
children:[
{
isShow:true,
nodeName:'天天下下级文件夹',
children:[]
},
{
isShow:false,
nodeName:'天天下下级文件夹2',
children:[]
},
]
},
{
isShow:false,
nodeName:'lala',
children:[]
}
],
nodeName:'天天文件夹',
},
{
isShow:true,
nodeName:'一样',
children:[]
},
{
isShow:false,
nodeName:'不一样',
children:[]
}
]
想要改造成以下这种
let data2=[
{
isShow:true,
children:[
{
isShow:true,
nodeName:'天天下级文件夹',
children:[
{
isShow:true,
nodeName:'天天下下级文件夹',
children:[]
},
]
},
],
nodeName:'天天文件夹',
},
{
isShow:true,
nodeName:'一样',
children:[]
},
]
回复
1个回答

test
2024-06-26
用filter过滤,再加个递归就行了
function filterData(data){
return data.filter(item => {
if(item.isShow) {
return true;
} else if(item.children && item.children.length) {
const res = filterData(item.children);
if(res.length){
item.children = res;
return true;
}
}
return false;
})
}
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容