小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('-') // 拼接为字符串}