如何使用filter方法递归过滤Tree数组对象
const treeData = [{
title: "1",
key: "1",
children: [{
title: "1-1",
key: "1-1",
children:[{
title:"1-1-1",
key:"1-1-1",
},{
title:"1-1-2",
key:"1-1-2",
}]
}, {
title: "1-2",
key: "1-2",
},{
title: "1-3",
key: "1-3",
},{
title: "1-4",
key: "1-4",
}],
}];
想要实现通过传入的key,过滤树,如果父级被过滤掉,该父级下面所有子级也全部被过滤。
我通过递归map,还有递归filter都没有实现过滤的效果。代码如下:
deleteTreeData = (data,selectedKey) => {
const newTreeData = data.filter((item) => {
if(item.children){
this.deleteTreeData(item.children,selectedKey);
}
return item.key !== selectedKey;
});
this.setState({
treeData : newTreeData,
},function(){
console.log("=====newTreeData:"+JSON.stringify(newTreeData));
});
}
这样写只能删除顶级菜单,请问正确的思路是什么,谢谢~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)