news 2026/6/15 14:28:54

深度优先遍历: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/6/15 12:16:41

2025专科生必备!9个降AI率工具测评榜单

2025专科生必备&#xff01;9个降AI率工具测评榜单 为何需要这份降AI率工具测评&#xff1f; 在2025年的学术环境中&#xff0c;AI生成内容&#xff08;AIGC&#xff09;检测技术已经高度成熟&#xff0c;许多高校和科研机构都引入了更为严格的查重系统。对于专科生而言&#x…

作者头像 李华
网站建设 2026/6/15 14:10:53

2025最新!9个AI论文平台测评:本科生写论文必备推荐

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

作者头像 李华
网站建设 2026/6/10 1:50:11

瑞芯微(EASY EAI)RV1126B SPI使用

1. SPI简介 SPI是串行外设接口(Serial Peripheral Interface)的缩写&#xff0c;是 Motorola 公司推出的一种同步串行接口技术&#xff0c;是一种高速、全双工、同步的通信总线在用户空间的应用程序中&#xff0c;完全可以不必理会SPI协议的详细规定。只需要按照驱动层提供给我…

作者头像 李华
网站建设 2026/6/13 16:25:26

爆肝整理!2025年十大企业级Agent应用案例,看完我直接原地封神

在2025年的全球技术语境下&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;已正式跨越了简单的对话式交互阶段&#xff0c;进入了以自主代理&#xff08;Autonomous Agents&#xff09;为核心的生产力变革元年。本文旨在通过对全球领先企业的十大生产级应用案…

作者头像 李华