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

分析vban的utlis中的helper方法(2)——树形数组

将列表(数组)转换为树形结构的函数

// tree from list
// 列表中的树
export function listToTree<T = any>(list: any[], config: Partial<TreeHelperConfig> = {}): T[] {const conf = getConfig(config) as TreeHelperConfig;//nodeMap 是一个 Map,用于存储每个节点的引用,以 id 为键,节点对象为值。const nodeMap = new Map();const result: T[] = [];const { id, children, pid } = conf;//遍历输入的列表 list,为每个节点初始化 children 字段(如果不存在的话)。
//将每个节点存储到 nodeMap 中,以便后续可以通过 id 快速查找父节点。for (const node of list) {node[children] = node[children] || [];nodeMap.set(node[id], node);}//再次遍历列表,根据每个节点的 pid 在 nodeMap 中查找其父节点。//如果找到了父节点(parent),将当前节点添加到父节点的 children 数组中。//如果没有找到父节点(即当前节点是根节点),则将当前节点添加到 result 数组中。for (const node of list) {const parent = nodeMap.get(node[pid]);(parent ? parent[children] : result).push(node);}return result;
}

示例使用

const list = [{ id: 1, pid: null, name: 'Root' },{ id: 2, pid: 1, name: 'Child 1' },{ id: 3, pid: 1, name: 'Child 2' },{ id: 4, pid: 2, name: 'Grandchild' }
];

调用结果

[{id: 1,pid: null,name: 'Root',children: [{ id: 2, pid: 1, name: 'Child 1', children: [{ id: 4, pid: 2, name: 'Grandchild', children: [] }] },{ id: 3, pid: 1, name: 'Child 2', children: [] }]}
]
http://www.xdnf.cn/news/12407.html

相关文章:

  • 5.4.3树和森林的遍历
  • 添加按钮跳转页面并且根据网站的用户状态判断是否显示按钮
  • CSS 性能优化
  • Langchain4J 向量模型和向量存储(9)
  • Power Query动态追加查询
  • 如何通过外网访问内网服务器?怎么让互联网上连接本地局域网的网址
  • 官网如何给下载VMware
  • [c#]判定当前软件是否用管理员权限打开
  • 【分享】推荐一些办公小工具
  • 【基础】每天掌握一个Linux命令 - awk
  • C++.OpenGL (11/64)材质(Materials)
  • 网页五子棋项目测试报告
  • Linux-http协议
  • 如何理解机器人课程的技术壁垒~壁垒和赚钱是两件不同的事情
  • cnn卷积神经变体
  • 多系统一键打包docker compose下所有镜像并且使用
  • NoSQL 之Redis哨兵
  • 最长回文子串问题-Manacher算法深度解析
  • 股指期货波动一个点多少钱?
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第一篇(排名不分先后)】
  • Dify工具插件开发和智能体开发全流程
  • 前端技能包
  • Compose基本介绍
  • Linux操作系统之进程(五):初识地址空间
  • 研究生遗产——历年AD检测比赛的研究简介
  • 智能运维如何让变电所“无人值守”还能降本增效?
  • 8.1_排序的基本概念
  • 【cmake】单配置生成器与多配置生成器的构建安装问题分析
  • 09.三数之和
  • 《零基础读懂新能源汽车》—— 新能源汽车充电革命:从逆变器原理到800V超充实战,一篇全掌握!