js,过滤树形数据

发布于 2022-09-13 00:56:45 字数 925 浏览 20 评论 0

有以下数据

[
    {
        "id":1,
        "children":[
            {
                "id":11
            },
            {
                "id":12
            }
        ]
    },
    {
        "id":2,
        "children":[
            {
                "id":21
            },
            {
                "id":22
            }
        ]
    },
    {
        "id":3,
        "children":[
            {
                "id":21
            },
            {
                "id":32
            }
        ]
    }
]

过滤掉id=21的数据,得到:

[
    {
        "id":1,
        "children":[
            {
                "id":11
            },
            {
                "id":12
            }
        ]
    },
    {
        "id":2,
        "children":[
            {
                "id":22
            }
        ]
    },
    {
        "id":3,
        "children":null
    }
]

请问如何实现?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清醇 2022-09-20 00:56:45
var list = [
    {
        "id":1,
        "children":[
            {
                "id":11
            },
            {
                "id":12
            }
        ]
    },
    {
        "id":2,
        "children":[
            {
                "id":21
            },
            {
                "id":22
            }
        ]
    },
    {
        "id":3,
        "children":[
            {
                "id":21
            },
            {
                "id":32
            }
        ]
    }
];

var filterTree = (list,id)=>list.filter(item=>((flag = item.id!=id),(flag && item.children) && (item.children = filterTree(item.children, id)),flag));
filterTree(list,21);

结果

[
    {
        "id": 1,
        "children": [
            {
                "id": 11
            },
            {
                "id": 12
            }
        ]
    },
    {
        "id": 2,
        "children": [
            {
                "id": 22
            }
        ]
    },
    {
        "id": 3,
        "children": [
            {
                "id": 32
            }
        ]
    }
]
围归者 2022-09-20 00:56:45
funtion (list, pickId = []) {
  return list.filter(item => {
     if (pickId.includes(item.id)) return false;
     if (item.children) {
       item.children = item.children.filter(chi => !pickId.includes(chi.id))
     }
     return true;
  })
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文