数组筛选数据,需要一个什么样的递归?

data:{
    root:3,
    object:[
        {
            id:3,
            pro:{
                child:[4],
                parent:null,
            },
        },
        {
            id:4,
            pro:{
                child:[5,6],
                parent:3,
            },
        },
        {
            id:5,
            pro:{
                child:[7,8],
                parent:4,
            },
        },
        {
            id:6,
            pro:{
                child:[9,10],
                parent:4,
            },
        },
        {
            id:7,
            pro:{
                child:[11],
                parent:5,
            },
        },
        {
            id:8,
            pro:{
                child:[12],
                parent:5,
            },
        },
        {
            id:9,
            pro:{
                child:null,
                parent:6,
            },
        },
        {
            id:10,
            pro:{
                child:null,
                parent:6,
            },
        },
        {
            id:11,
            pro:{
                child:null,
                parent:7,
            },
        },
        {
            id:12,
            pro:{
                child:null,
                parent:8,
            },
        },
        {
            id:1,
            pro:{
                child:[2],
                parent:null,
            },
        },
        {
            id:2,
            pro:{
                child:[13],
                parent:1,
            },
        },
        {
            id:13,
            pro:{
                child:null,
                parent:2,
            },
        },
    ]
}

数据格式如上,怎么把id等于root的根节点,以及他的子孙节点筛选出来,child里的数据对应的是子节点的id,求大神指点迷津。
想要筛选过后的数据为

object:[
        {
            id:3,
            pro:{
                child:[4],
                parent:null,
            },
        },
        {
            id:4,
            pro:{
                child:[5,6],
                parent:3,
            },
        },
        {
            id:5,
            pro:{
                child:[7,8],
                parent:4,
            },
        },
        {
            id:6,
            pro:{
                child:[9,10],
                parent:4,
            },
        },
        {
            id:7,
            pro:{
                child:[11],
                parent:5,
            },
        },
        {
            id:8,
            pro:{
                child:[12],
                parent:5,
            },
        },
        {
            id:9,
            pro:{
                child:null,
                parent:6,
            },
        },
        {
            id:10,
            pro:{
                child:null,
                parent:6,
            },
        },
        {
            id:11,
            pro:{
                child:null,
                parent:7,
            },
        },
        {
            id:12,
            pro:{
                child:null,
                parent:8,
            },
        }
    ]
阅读 1.6k
2 个回答
data.object.filter(item => item.id === data.root);

你这个数据结构根本不需要递归,一遍循环就解决了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题