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

前端将传回的List数据组织成树形数据并展示

前端将List传回的数据组织成树形数据并展示

系列文章指路👉
系列文章-基于Vue3创建前端项目并引入、配置常用的库和工具类

文章目录

  • List数据示例
  • 组织数据
  • html
  • 展示

List数据示例

let dataArray = [{rootNode: true, parentId: null, id: '001', title: '父目录'},{rootNode: false, parentId: '001', id: '0011', title: '子目录1'},{rootNode: false, parentId: '0011', id: '0011-001', title: '孙目录1'},{rootNode: false, parentId: '0011-001', id: '0011-001-01', title: 'testName01'},{rootNode: false, parentId: '0011-001', id: '0011-001-02', title: 'testName02'},{rootNode: false, parentId: '0011', id: '0011-002', title: '孙目录2'},{rootNode: false, parentId: '0011', id: '0011-003', title: '孙目录3'},{rootNode: false, parentId: '001', id: '0012', title: '子目录2'},{rootNode: false, parentId: '001', id: '0013', title: '子目录3'},
]

组织数据

let treeData = buildTree(dataArray)
function buildTree(dataArray) {// 1. 创建ID到节点的映射(同时初始化children数组)const nodeMap = new Map();dataArray.forEach(dataObject => {nodeMap.set(dataObject.id,{parentId: dataObject.parentId,id: dataObject.id,rootNode: dataObject.rootNode,title: dataObject.title,children: []});});// 2. 构建树形结构const tree = [];for (const node of nodeMap.values()) {if (!node.rootNode) {// 查找父节点const parent = nodeMap.get(node.parentId);// 如果找到父节点,则将当前节点加入其childrenif (parent){parent.children.push(node);}} else {// 根节点node.expand = truetree.push(node);}}console.log(dataArray);console.log(tree);return tree;
}

html

<div style="margin-top: 40px"><a-tree:tree-data="treeData"></a-tree></div>

展示

在这里插入图片描述

http://www.lryc.cn/news/588279.html

相关文章:

  • 用于监测线性基础设施的分布式声学传感:现状与趋势
  • 深度剖析:动态接口代理核心原理与高级应用
  • APP测试之Monkey压力测试
  • Relocations in generic ELF (EM: 40)
  • Qt小组件 - 2(布局)瀑布流布局,GridLayout,FlowLayout
  • 虚拟列表组件如果滑动速度过快导致渲染性能问题
  • UART寄存器介绍
  • 前端学习5:Float学习(仅简单了解,引出flex)
  • 015 程序地址空间入门
  • Life:Internship in OnSea Day 22
  • 某ctv视频下载逆向思路
  • 云原生技术与应用-Containerd容器技术详解
  • Git LFS 操作处理Github上传大文件操作记录
  • Spring Boot 双数据源配置
  • RPC vs RESTful架构选择背后的技术博弈
  • SecretFlow 隐语 (2) --- 隐语架构概览
  • 【安卓笔记】进程和线程的基础知识
  • Ubuntu20.05上安装Clang 15
  • 【安卓笔记】线程基本使用:锁、锁案例
  • 新型eSIM攻击技术可克隆用户资料并劫持手机身份
  • linux 内核: 访问当前进程的 task_struct
  • [论文阅读] 人工智能 + 软件工程 | 用大语言模型+排名机制,让代码评论自动更新更靠谱
  • android Perfetto cpu分析教程及案例
  • 迁移学习之图像预训练理解
  • ICML 2025 | 从语言到视觉,自回归模型VARSR开启图像超分新范式
  • C# TCP粘包与拆包深度了解
  • CSP-S 模拟赛 17
  • 哈希扩展 --- 海量数据处理
  • 一文明白AI、AIGC、LLM、GPT、Agent、workFlow、MCP、RAG概念与关系
  • Linux操作系统从入门到实战(七)详细讲解编辑器Vim