接口写好了吗 2023-06-27 17:45 采纳率: 80.2%
浏览 14
已结题

如何递归树形结构数组,获取到符合条件的数据返回

如何递归拿到树形结构数组内符合条件的数据
结构类似这样:

list:[
                        {
                            id:1,
                        },
                        {
                            id:2,
                            children:[
                                {
                                    id:21,
                                    name:'cc',
                                    children:[
                                        {
                                            id:221,
                                            name:'pp'
                                        }
                                    ]
                                },
                                {
                                    id:22,
                                    name:'dd'
                                }
                            ]
                        },
                        {
                            id:3,
                            children:[
                                {
                                    id:31,
                                    name:'ff'
                                },
                                {
                                    id:32,
                                    name:'ee'
                                }
                            ]
                        },
                    ]

就是多层嵌套的,子级是children。
我需要的是我拿到某一层的id,通过这个id递归这个数组拿到对应id的children数组返回给我。
比如我拿到了一个21,那么我需要拿到这里id为21的这个对象中的children数组。这个要如何拿

  • 写回答

3条回答 默认 最新

  • java入门选手 2023-06-27 17:47
    关注

    基于new bing部分指引作答:
    您可以使用递归的方式来拿到指定id的children数组。以下是一个示例的JavaScript代码:

    function findChildrenById(arr, id) {
        for (let i = 0; i < arr.length; i++) {
            if (arr[i].id === id) {
                return arr[i].children || [];
            }
            if (Array.isArray(arr[i].children)) {
                const result = findChildrenById(arr[i].children, id);
                if (result.length > 0) {
                    return result;
                }
            }
        }
        return [];
    }
    
    const data = [
        {
            id: 1,
        },
        {
            id: 2,
            children: [
                {
                    id: 21,
                    name: 'cc',
                    children: [
                        {
                            id: 221,
                            name: 'pp'
                        }
                    ]
                },
                {
                    id: 22,
                    name: 'dd'
                }
            ]
        },
        {
            id: 3,
            children: [
                {
                    id: 31,
                    name: 'ff'
                },
                {
                    id: 32,
                    name: 'ee'
                }
            ]
        },
    ];
    
    const id = 21;
    const result = findChildrenById(data, id);
    console.log(result);
    

    在上述代码中,findChildrenById 函数通过遍历数组进行查找,如果找到具有指定id的对象,则返回其对应的children数组。如果该对象下还有children属性,那么会继续递归调用 findChildrenById 函数进行查找。最终,通过调用 findChildrenById(data, id) 来获取id为21的对象的children数组。

    请注意,这只是一个简单的示例实现,您可以根据实际需求进行调整和扩展。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月28日
  • 创建了问题 6月27日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值