首页 > 其他分享 >构建目录树结构

构建目录树结构

时间:2024-11-27 11:24:07浏览次数:4  
标签:node name 树结构 tree 目录 构建 parentId nodes id

// 示例节点结构  
        const nodes = [  
            { id: 1, parentId: null, name: 'Root' },  
            
            { id: 4, parentId: 2, name: 'Grandchild 1' },  
            { id: 5, parentId: 2, name: 'Grandchild 2' },  
            { id: 3, parentId: 1, name: 'Child 2' },  
            { id: 2, parentId: 1, name: 'Child 1' },  
        ];  
        
        // 辅助函数:通过id查找节点  
        function findNodeById(tree, id) {  
            if (!tree || !tree.length) return null;  
        
            for (let node of tree) {  
                if (node.id === id) {  
                    return node;  
                } else if (node.children && node.children.length) {  
                    const found = findNodeById(node.children, id);  
                    if (found) {  
                        return found;  
                    }  
                }  
            }  
            return null;  
        }  
        
        // 主函数:构建树结构  
        function buildTree(nodes, parentId = null) {  
            console.log(nodes,11111)
            return nodes  
                .filter(node => node.parentId === parentId) // 筛选出当前层级的节点  
                .map(node => ({  
                    ...node,  
                    children: buildTree(nodes, node.id) // 递归构建子节点  
                }));  
        }  
        
        // 构建树  
        const tree = buildTree(nodes);  
        console.log(tree,1123)
        // 通过id查询节点  
        const nodeIdToFind = 1;  
        const foundNode = findNodeById(tree, nodeIdToFind);  
        
        console.log(foundNode); // 输出: { id: 4, parentId: 2, name: 'Grandchild 1', children: [] }

  

标签:node,name,树结构,tree,目录,构建,parentId,nodes,id
From: https://www.cnblogs.com/MDGE/p/18572019

相关文章

  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(二)
    KendoUIforAngularListView可以轻松地为客户端设置一个带有图表列表的仪表板,包括分页、按钮选项、数字或滚动,以及在没有更多项目要显示时的通知等。KendoUIforAngular是专用于Angular开发的专业级Angular组件。telerik致力于提供纯粹的高性能AngularUI组件,无需任何jQuery......
  • HarmonyOS Next 利用 FIDO 构建企业级安全认证体系实战
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)在企业级安全认证体系构建中的实际应用,基于真实项目经验进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、项目......
  • 代码随想录算法训练营day58| 117.软件构建 47.参加科学大会
    学习资料:https://www.programmercarl.com/kamacoder/0117.软件构建.html#拓扑排序的背景图论拓扑排序:收集入度为0的节点,删掉该节点后其他节点的入度可能变化,记得更新,然后继续删除入度为0的点,直到没有。整个过程的顺序就对应了有向图dijkstra算法:类似prim,也是贪心,找距离源点最近......
  • 北京银行如何构建全栈大模型应用体系?
    金融行业凭借其长期以来积累的大规模数据资源和丰富多样的应用场景,已经逐渐成为大模型技术应用的理想试验田。然而在实际应用过程中,金融大模型也面临着三大显著挑战:高端芯片的获取受到限制、数据问题凸显以及大模型应用潜在的风险。前排提示,文末有大模型AGI-CSDN独家资料包......
  • AbMole| JNJ-42041935(CAS号1193383-09-3;目录号M8963)
    JNJ-42041935是一种高效的,竞争性的,选择性脯氨酰羟化酶PHD抑制剂,对于PHD1,PHD2andPHD3的pKi值分别为7.91±0.04,7.29±0.05和7.65±0.09。生物活性JNJ-42041935是一种有效的,2-氧戊二酸竞争性,可逆性和选择性PHD酶抑制剂。JNJ-42041935是PHD2181-417最有效的抑制剂,其pIC50......
  • 编写强大的 Rust 宏——带有属性的构建器
    本章内容:使用字段级自定义属性重命名方法使用根级自定义属性决定错误处理方式使用类型状态使构建器更易于使用探索 derive 和属性宏的区别在函数式宏中解析(文档)属性到目前为止,我们创建的每个宏的行为都是固定的。没有任何自定义的空间。但是,有时候你可能希望拥有可覆盖的行......
  • 03-06、SpringCloud第六章,升级篇,升级概述与Rest微服务案例构建
    SpringCloud第六章,升级篇,升级概述与Rest微服务案例构建一、Springcloud升级之后的变动发现springcloud升级之后,原来的各个框架都有所变化。二、Rest微服务构建案例工程以订单模块做一个微服务通用案例、Consumer消费者[order]通过rest调用Provider生产者[payment]提供......
  • Maven构建多模块项目(按层去分)
    标签(空格分隔):springboot为什么要构建多模块项目(1)不同方面的代码之间相互耦合,这时候一系统出现问题很难定位到问题的出现原因,即使定位到问题也很难修正问题,可能在修正问题的时候引入更多的问题。(2)多方面的代码集中在一个整体结构中,新入的开发者很难对整体......
  • 编程算法学习 目录
    编程算法学习目录第一章:基本概念什么是算法:算法(Algorithm)解决问题的方法,是基于特定的计算模型,旨在解决某一信息处理问题而设计的一个指令序列什么是数据结构:数据结构是一种数据组织、管理和存储的格式什么是时间复杂度什么是空间复杂度:第二章:线性数据结构什么是数组......
  • 大数据架构系统技术:构建可扩展、高效、智能的数据处理平台
    引言随着互联网技术和数据采集手段的飞速发展,数据量的急剧增长已成为现代社会的显著特征。从社交媒体、金融服务到物联网,各种领域产生的海量数据要求我们能够设计并实现高效、可靠且可扩展的大数据架构。无论是数据存储、计算资源管理,还是数据处理流程的优化,所有这些都需要......