当前位置: 首页 > news >正文

小demo:选中树结构最后层级拿到所有层级中的deviceName并按照要求拼接

要求:选中5874,要求返回生产部123-部门1-部门2-5874

完成核心:遍历树结构使用Map保存所有节点信息,拿到当前节点,回溯父节点直至根节点。

    //生成map映射数据const buildNodeMap = (data) => {const nodeMap = new Map()const traverseNode = (nodes) => {nodes.forEach((node) => {nodeMap.set(node.id, node)if (node.children.length > 0) {traverseNode(node.children)}})}traverseNode(data)return nodeMap}const getPathFromNode = (nodeId, nodeMap) => {const path = []let currentNode = nodeMap.get(nodeId) // 当前节点// 回溯父节点,直到根节点while (currentNode) {path.unshift(currentNode.divisionName) // 从根到叶子,逆序添加currentNode = !currentNode.parentId ? null : nodeMap.get(currentNode.parentId)}return path.join('-') // 拼接为字符串}

http://www.xdnf.cn/news/505981.html

相关文章:

  • 嵌入式培训之数据结构学习(五)栈与队列
  • C语言:gcc 如何调用 Win32 打开文件对话框 ?
  • 543.二叉树的直径
  • CT重建笔记(五)—2D平行束投影公式
  • 5.15 学习日志
  • Java 面向对象详解和JVM底层内存分析
  • 图表制作-基础雷达图
  • 代码随想录算法训练营第60期第三十九天打卡
  • 2025.5.17 字符串hash
  • 如何利用Redis实现延迟队列?
  • 【leetcode】2900. 最长相邻不相等子序列 I
  • 数据库索引优化:如何平衡查询与写入性能
  • 劳特巴赫trace32烧录方法
  • 【Linux网络】ARP协议
  • 使用Pinia持久化插件-persist解决刷新浏览器后数据丢失的问题
  • 使用python进行船舶轨迹跟踪
  • 编译原理7~9
  • 【Element UI】表单及其验证规则详细
  • python运算符
  • python训练营打卡第26天
  • Go语言 Gin框架 使用指南
  • js中不同循环的使用以及结束循环方法
  • 两个电机由同一个控制器控制,其中一个电机发生堵转时,另一个电机的电流会变大,是发生了倒灌现象吗?电流倒灌产生的机理是什么?
  • Gartner《How to Leverage Lakehouse Design in Your DataStrategy》学习心得
  • SAP HCM 0008数据存储逻辑
  • 《棒球万事通》球类运动有哪些项目·棒球1号位
  • c++ 运算符重载
  • 16 C 语言布尔类型与 sizeof 运算符详解:布尔类型的三种声明方式、执行时间、赋值规则
  • qt6 c++操作qtableview和yaml
  • 使用 CodeBuddy 开发一款富交互的屏幕录制与注释分享工具开发纪实