news 2026/5/30 23:56:26

深度优先遍历: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/5/28 13:21:59

2025最新!专科生毕业论文必备8个AI论文平台测评

2025最新&#xff01;专科生毕业论文必备8个AI论文平台测评 2025年专科生论文写作工具测评&#xff1a;为何需要一份权威榜单&#xff1f; 随着AI技术的不断进步&#xff0c;越来越多的专科生开始借助智能工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的AI论文平台…

作者头像 李华
网站建设 2026/5/30 19:29:27

宽域测温适配全场景 高低温型红外测温传感器满足多行业需求

不同行业、不同工况对测温范围的需求差异较大&#xff0c;选择一款能适配多种温度场景的传感器&#xff0c;能为企业节省设备采购与维护成本。FST600-402高低温型红外测温传感器&#xff0c;凭借宽域测温优势&#xff0c;轻松覆盖多行业需求。 高低温型红外测温传感器提供-50~3…

作者头像 李华
网站建设 2026/5/28 23:30:28

AI定价战:Gemini 3 Flash如何以1/5价格挑战行业格局

2025年12月17日&#xff0c;Google发布Gemini 3 Flash&#xff0c;以颠覆性的定价策略打响AI成本战。当它用1/5的价格提供接近旗舰级的性能时&#xff0c;整个AI行业的格局正在悄然改变。一、价格炸弹&#xff1a;Gemini 3 Flash到底有多便宜&#xff1f; 先看数字&#xff0c;…

作者头像 李华
网站建设 2026/5/29 16:37:34

程序员最怕的 35 岁门槛,为何在网安领域却是越老越吃香?

同样是技术岗&#xff0c;为啥程序员怕35岁危机&#xff0c;网安却越老越值钱&#xff1f; 你有没有发现&#xff0c;身边做程序员的朋友&#xff0c;一到 30 岁就开始焦虑 “35 岁后怎么办”&#xff0c;但做网安的前辈&#xff0c;反而越往后越吃香&#xff0c;薪资和话语权…

作者头像 李华