news 2026/2/12 9:49:58

深度优先遍历: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/1/31 15:57:24

Redis解析

一、Redis 到底是个啥&#xff1f;&#xff08;白话版&#xff09;简单说&#xff0c;Redis 就是一款超高速的内存数据库&#xff0c;你可以把它理解成 “电脑内存里的万能储物箱”—— 数据都存在内存里&#xff08;不是硬盘&#xff09;&#xff0c;所以读写速度快到离谱&…

作者头像 李华
网站建设 2026/2/8 15:36:03

突破界限:全新多模态大语言模型评估方法揭示未来发展方向!

简介 本文提出了一种新的多模态大语言模型评估方法&#xff0c;构建了M3STR基准测试&#xff0c;专门评估模型对结构化知识的抽象视觉理解能力。通过设计计数、检测和补全三类任务&#xff0c;对26个主流MLLMs进行全面评估&#xff0c;研究发现当前模型在抽象视觉理解方面存在…

作者头像 李华
网站建设 2026/2/4 22:58:48

提示工程(Prompt Engineering)完全指南:让AI听话的终极秘诀!

《Prompt Engineering Guide》&#xff08;提示工程指南&#xff09;是一个非常系统且深度的知识库。原文内容地址&#xff1a;https://www.promptingguide.ai/zh 。我将这套内容总结后规划为 4个核心篇章给大家分享&#xff0c;第一章主要讲解基础核心概念。 第一篇&#xff1…

作者头像 李华
网站建设 2026/2/5 14:48:20

【网络安全干货】一篇吃透 CTF!从入门到参赛看这篇就够

一、什么是CTF&#xff1f; CTF&#xff0c;即 Capture The Flag&#xff0c;中文名为夺旗赛&#xff0c;是一种网络安全技术人员之间进行技术竞技的比赛形式。 在 CTF 比赛中&#xff0c;参赛者需要通过解决各种与网络安全相关的技术挑战来获取“旗帜”&#xff0c;这些挑战…

作者头像 李华
网站建设 2026/2/10 3:27:43

Open-AutoGLM phone9b发布在即:3大亮点预示智能终端新纪元?

第一章&#xff1a;Open-AutoGLM phone9b发布在即&#xff1a;智能终端新纪元开启随着边缘计算与大模型融合趋势的加速&#xff0c;Open-AutoGLM即将推出的phone9b标志着智能终端进入全新发展阶段。该设备搭载专为移动端优化的AutoGLM-Edge推理引擎&#xff0c;支持本地化运行9…

作者头像 李华