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

数组转树形数据

const nodes = [{ id: 3, name: '节点C', pid: 1 },{ id: 6, name: '节点F', pid: 3 },{ id: 0, name: 'root', pid: null },{ id: 1, name: '节点A', pid: 0 },{ id: 8, name: '节点H', pid: 4 },{ id: 4, name: '节点D', pid: 1 },{ id: 2, name: '节点B', pid: 0 },{ id: 5, name: '节点E', pid: 2 },{ id: 7, name: '节点G', pid: 2 },{ id: 9, name: '节点I', pid: 5 }
];function convert(data) {if (!Array.isArray(data)) {new Error('data must be an array');return;}let result;let map = {};data.forEach(item => {//id作为keymap[item.id] = item;});data.forEach(item => {// item.pid 为0时 返回underfinedlet parent = map[item.pid];if (parent) {//如果用children,就直接push,没有就初始化数组(parent.children || (parent.children = [])).push(item);} else {// 这里push的item是pid为0的数据result = item;}});return result;
}console.log(convert(nodes));
{id: 0,name: 'root',pid: null,children: [{ id: 1, name: '节点A', pid: 0, children: [Array] },{ id: 2, name: '节点B', pid: 0, children: [Array] }]}
http://www.lryc.cn/news/212177.html

相关文章:

  • react动态插入样式
  • OkHttp网络框架深入理解-SSL握手与加密
  • Mac 安装使用NPM及常用命令
  • 利用 JSqlParser 防止 SQL 注入
  • 10.27~10.29数电第三次实验分析与问题
  • 【软考】14.3 设计模式
  • Mac docker+vscode
  • LLVM学习笔记(58)
  • C语言 每日一题 PTA 10.30 day8
  • nacos在linux中的安装、集群的配置、mysql生产配置
  • OpenAI 组建安全 AGI 新团队!应对AI“潘多拉魔盒”
  • 上网行为管理软件有哪些丨功能图文超详细介绍
  • DVWA-SQL Injection SQL注入
  • 【0基础学Java第四课】-- 逻辑控制
  • C++中的std::cout与std::cerr、std::clog
  • No authorization token was found
  • Kubernetes概述及其组件/核心组件
  • 毫米波雷达实时采集教
  • Java进阶(HashMap)——面试时HashMap常见问题解读 结合源码分析
  • Kotlin 使用@BindingAdapter编译出错
  • Qt之信号和槽,connect参数分析
  • Python学习笔记—元组
  • 【C++项目】高并发内存池第五讲内存回收释放过程介绍
  • [毕设记录]@学术工具体验:Sread.ai
  • uboot - 驱动开发 - 驱动模型
  • windows 操作系统命令积累
  • 数据结构单链表的实现(C语言)
  • Postman的高级使用,傻瓜式学习【下】
  • Qt:关闭对话框,动画实现窗体逐渐缩小到消失
  • 在Windows上 ciphey安装(详细版)