news 2026/4/23 14:06:11

深度优先遍历:JavaScript递归查找树形数据结构中的节点标签

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度优先遍历:JavaScript递归查找树形数据结构中的节点标签

概述

在Web开发中,我们经常需要处理树形结构数据(如组织架构、分类目录、菜单等)。今天我将分享一个实用的JavaScript方法,用于在复杂的树形数据结构中根据ID查找对应的节点标签。

核心算法

/** * 根据id在树形数据结构中查找对应的节点 * @param {string|number} id - 要查找的节点ID * @param {Array|Object} data - 树形数据结构(数组或对象) * @returns {Object|null} 找到返回完整的节点对象,找不到返回null */ findLabelById(id, data) { // 边界条件处理:如果data为空或未定义,直接返回null if (!data) { return null; } // 情况1:data是数组(树的根节点或子节点数组) if (Array.isArray(data)) { for (let i = 0; i < data.length; i++) { const result = this.findLabelById(id, data[i]); if (result !== null) { return result; } } return null; } // 情况2:data是对象(单个节点) if (data && typeof data === 'object') { // 如果当前节点的id匹配目标id,返回当前节点 if (data.id === id) { return data; } // 如果当前节点有子节点,递归查找子节点 if (data.children && Array.isArray(data.children) && data.children.length > 0) { for (let i = 0; i < data.children.length; i++) { const result = this.findLabelById(id, data.children[i]); if (result !== null) { return result; } } } } // 未找到匹配的节点 return null; }

使用示例

const treeData = [ { id: 1, label: "节点1", children: [ { id: 11, label: "节点1-1", children: [ { id: 111, label: "节点1-1-1" }, { id: 112, label: "节点1-1-2" } ] }, { id: 12, label: "节点1-2" } ] }, { id: 2, label: "节点2", children: [ { id: 21, label: "节点2-1" } ] } ];

查找示例

// 查找存在的节点 const node = findLabelById(111, treeData); console.log(node); // 输出:{ id: 111, label: "节点1-1-1" } // 查找不存在的节点 const notFound = findLabelById(999, treeData); console.log(notFound); // 输出:null
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 8:28:42

AWS云上业务稳定性保障:构建高可用架构的实战指南

作为AWS高级咨询合作伙伴,我们已帮助众多企业构建了高可用的云上架构。今天将分享如何通过系统化的方法,在云上实现99.99%的业务可用性,确保您的关键业务稳定运行。 理解业务可用性的真正含义 可用性等级与业务影响 可用性等级 年停机时间 月停机时间 典型业务影响 99% 3.6…

作者头像 李华
网站建设 2026/4/22 18:40:19

2025年回顾:CIO直面业务与技术双重需求挑战

今年《InformationWeek》所采访的CIO们面临着一个共同现实&#xff1a;领导IT意味着引领变革——往往是重大变革。跨越各个行业&#xff0c;CIO们描述了一个超越工具和系统的角色&#xff0c;需要商业判断力、变革管理能力以及建立信任的能力——这一切都发生在AI技术飞速发展和…

作者头像 李华
网站建设 2026/4/23 8:26:29

全球汽车后装远程信息服务订阅量突破9000万大关

物联网分析公司Berg Insight的最新研究显示&#xff0c;2024年全球汽车后装远程信息设备出货量达到2650万台&#xff0c;预计到2029年将增长至3930万台。活跃的汽车后装远程信息设备安装基数将以8.7%的复合年增长率增长&#xff0c;从2024年底的9030万台增长到2029年底的1.368亿…

作者头像 李华
网站建设 2026/4/23 8:29:38

大语言模型(LLM)系统化学习全攻略:从入门到精通的零基础详细教程!AI大模型工程师学习路线!

简介 文章提供了学习大语言模型(LLM)的系统化路径&#xff0c;包括基础准备、核心理论(NLP基础、Transformer架构)、实践项目(入门到高级)、持续学习资源和时间规划。建议学习者从基础知识入手&#xff0c;通过复现经典论文、参与竞赛和构建应用逐步提升能力&#xff0c;关注行…

作者头像 李华
网站建设 2026/4/7 9:53:50

EtherCAT 转 Modbus RTU 工业智能网关赋能风机盘管集中监控落地实践

一、案例概况本案例面向高端写字楼中央空调分区温控系统&#xff0c;解决新部署的汇川EtherCAT总线PLC与存量西门子RDF300风机盘管温控器的异构通讯问题&#xff0c;实现12层共144台风机盘管的集中监控、远程调参与节能联动&#xff0c;接入楼宇BMS系统&#xff0c;最终达成分区…

作者头像 李华
网站建设 2026/4/23 13:19:18

中国机械工业有限公司第四工程行政办公楼空调系统设计

2 设计参数 2.1 室外气象参数 本工程设计&#xff0c;根据《民用建筑供暖通风与空气调节设计规范》&#xff08;以下简称《暖规》&#xff09;&#xff0c;查得郑州室外空气计算参数&#xff0c;如表2.1所示。3 空调方案拟定 3.1 空调系统的基本分类 目前在我国广泛使用的系统主…

作者头像 李华