将扁平数据转换为树形数据的方法

当遇到了好多扁平数据我们都无从下手?不知道如何处理?

家人们 无脑调用这个函数就好了

接口请求回来以后

调用这个函数传入实参就可以用啦~

// 树形菜单函数
function GetTreeData(data) {let TreeData = [];let map = new Map(); //存在id,对应所在的内存地址// console.log(map);let outputObj, pid;for (let i = 0; i < data.length; i++) {pid = data[i].pid;if (map.has(pid)) {//存在,将些信息,加入到对应id=pid的对象上的childrenif (!map.get(pid).children) map.get(pid).children = [];let obj = new Object(data[i]);map.get(pid).children.push(obj);map.set(data[i].id, obj);// console.log(map);} else if (!map.has(pid) && pid == 0) {//这里处理pid不存在,且pid 为0的处理,pid不存在,且不为0的,程序不考虑这种情况outputObj = new Object(data[i]);TreeData.push(outputObj);map.set(data[i].id, outputObj);// console.log(map);}}return TreeData;
}

输出效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/803989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity之Unity面试题(三)

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之Unity面试题&#xff08;三&#xff09; TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取…

关于Salesforce DevOps的理解

“DevOps”是一组结合了软件开发 &#xff08;Dev&#xff09; 和运营 &#xff08;Ops&#xff09; 的实践&#xff0c;可帮助团队更快、更可靠地构建、测试和发布软件。 DevOps 的核心理念包括持续集成&#xff08;Continuous Integration&#xff09;、持续交付&#xff08;…

1.微服务

一、微服务是什么 微服务是一种架构风格&#xff0c;即&#xff0c;一个应用应该是一组小型服务&#xff0c;每个服务器只负责一种服务&#xff0c;服务之间可以通过 HTTP 的方式进行互通。每一个功能元素最终都是一个可独立替换和独立升级的软件单元。 可以说&#xff0c;微…

websockets.exceptions.ConnectionClosedError: no close frame received or sent

websockets.exceptions.ConnectionClosedError: no close frame received or sent这个错误表明WebSocket连接在没有接收或发送关闭帧&#xff08;close frame&#xff09;的情况下被关闭了。WebSocket协议规定&#xff0c;连接的关闭应该是由发送关闭帧开始的&#xff0c;这样的…

VS2012编译Lua5.1的luafilesystem(lfs)

文章目录 lfs源码下载下载lua库编译lfs.dll检测和使用LuaFileSystem是一个Lua库,用于补充标准Lua发行版提供的与文件系统相关的一组函数。 LuaFileSystem提供了一种可移植的方式来访问底层目录结构和文件属性。LuaFileSystem是免费软件,使用与Lua 5相同的许可证。 下面的办法…

hive-分桶-索引(初篇)

hvie - 分桶 创建分桶表之前要先设置hive允许进行强制分桶配置 set hive.enforce.bucketingtrue 创建分桶表 create table tmp_bucket(id int,name String) clustered by (id) into 4 buckets 建表 其中x表示分几个桶进行抽样&#xff0c;y表示间隔几个桶进行一次分桶…

SSL数字证书

SSL数字证书产品提供商主要来自于国外&#xff0c;尤其是美国&#xff0c;原理和使用操作系统一样&#xff0c;区别在于SSL数字证书目前无法替代性&#xff0c;要想达到兼容性99%的机构目前全球才3-4家&#xff0c;目前国内的主流网站主要使用的是国际证书&#xff0c;除了考虑…

【简单讲解下Kotlin】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Maven与Jave web结构

Maven 简介 https://www.liaoxuefeng.com/wiki/1252599548343744/1255945359327200 java web module web目录 –src 应用程序源代码和测试程序代码的根目录 –main –java  应用程序源代码目录     --package1     --class1     --class2 –resources  应用…

【开发工具】Vim 编辑器基础指南

Vim 是一个强大的文本编辑器&#xff0c;虽然它有一些陡峭的学习曲线&#xff0c;但一旦你熟悉了它的基本操作&#xff0c;就会发现它非常高效。以下是一些基本的 Vim 使用方法&#xff1a; 1. 启动 Vim 在终端中键入 vim 命令&#xff0c;然后按 Enter 键。 vim2. 基本移动…

力扣练习4.9

46. 全排列 回溯算法。可以手绘一个二叉树&#xff0c;考虑所有可能的情况。 每次选择一个元素&#xff0c;下次就选择未被选择的数&#xff0c;这样到达终止条件后就将当前路径添加到结果中。 完后撤销上次的选择&#xff0c;尝试下一个选择。 class Solution:def permute(s…

华为S5735S核心交换配置实例

以下脚本实现创建vlan2,3&#xff0c;IP划分&#xff0c;DHCP启用&#xff0c;接口划分&#xff0c;ssh,telnet,http,远程登录启用 默认用户创建admin/admin123提示首次登录需要更改用户密码 sysname test-Hxvlan 2 description to test1…

Spring Boot核心注解大全:从入门到精通(三)

本系列文章简介&#xff1a; Spring Boot是一款非常流行的Java开发框架&#xff0c;它通过简化配置和提供丰富的开箱即用功能&#xff0c;使得Java开发变得更加快速和简单。在Spring Boot中&#xff0c;核心注解扮演着非常重要的角色&#xff0c;它们定义了应用程序的行为和特性…

LeetCode 53. 最大子序和

解题思路 相关代码 class Solution {public int maxSubArray(int[] nums) {//f[i]是以nums[i]结尾的连续子数组的最大和。int f[] new int[100010];f[0] nums[0];int resnums[0];for(int i1;i<nums.length;i){f[i] Math.max(f[i-1]nums[i],nums[i]);res Math.max(res,f…

【LeetCode热题100】【二叉树】二叉树的中序遍历

题目链接&#xff1a;94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09; 中序遍历就是先遍历左子树再遍历根最后遍历右子树 class Solution { public:void traverse(TreeNode *root) {if (!root)return;traverse(root->left);ans.push_back(root->val);tra…

js的模块是怎么加载的

js的模块是怎么加载的 以上是几种常见的 JavaScript 模块加载方式。不同的加载方式适用于不同的场景&#xff0c;选择合适的模块加载方式可以更好地组织和管理 JavaScript 代码。 1.ES6 模块 (ESM)&#xff1a;ES6 模块是 JavaScript 中官方的模块化方案&#xff0c;使用 imp…

阻抗匹配(低频和高频)

一、当信号为低频时 二、当信号为高频时 三、最理想的阻抗要求&#xff1f; 四、为什么射频阻抗基本都是50欧姆&#xff08;信号源阻抗传输线特征阻抗负载阻抗50欧姆&#xff09; 综合考虑&#xff0c;射频行业标准选定50欧姆阻抗。

kubeadm k8s 1.24之后版本安装,带cri-dockerd

最后编辑时间&#xff1a;2024/3/26 适用于1.24之后的版本 单节点配置 检查是否已经安装kubectl, kubelet, kubeadm直接输入命令确定&#xff0c;如果提示没有该指令则正确 kubectl kubelet kubeadm如果之前安装&#xff0c;首先reset&#xff0c;然后使用apt remove和snap r…

java1.8关于 List .Stream()常用的方法

List <String>listArrays.strean(array).collect(Collectors.toList())&#xff1b;//数组转集合 String[] arraylist.stream().toArray(String[]::new);//集合转数组 Map<String,String>list.stream().collect(Collectors.toMap(Student::getId,Student::getNam…

SqlServer快速导出数据库结构的方法

1、查询出所有的表 SELECT name, id From sysobjects WHERE xtype u ORDER BY name ASC 2、根据表名查询出表结构 select syscolumns.name as "列名", systypes.name as "数据类型", syscolumns.length as "数据长度", sys.extended_prope…