tree型数组平铺,一维数组结构tree型

一维数组结构成tree型关键是每个一维数字里面必须有一个自己唯一识别的标识(id)和父级唯一识别的表示  (pid)

 function oneTotree(data,pid,idKey,pidKey){

        let node=[]

        pid = pid||"" //这里的值是以哪个pid的值为根节点开始往下找

        idKey =idKey||"id"

        idKey =pidKey||"pid"

        data.forEach(item=>{

          if(item[pidKey]===pid){

            let node=Object.assign(

              {

                hidden:true,

                alawyShow:true

              },item

            )

            node.path=item.url

            node.id=item.id

            node.name=item.name

            node.children=oneTotree(data,item[idKey],idKey,pidKey)

            if(node.children.length===0){

              node.isLeaf=true//是否是叶子节点

              delete node.children

            }

            nodes.push(node)

          }

        })

        return nodes

      }

tree结构平铺成一维数组结构

const treeToLine = (list) => {

        return list.reduce(

          (arr, { id, title, parent_id, children = [] }) =>

            arr.concat(

              [

                {

                  id,

                  title,

                  parent_id,

                },

              ],

              treeToLine(children)

            ),

          []

        );

      };

根据叶子节点查找所有他的父级节点

function getParentId(list, id) {

        for (let i in list) {

          if (list[i].id == id) {

            return [list[i]];

          }

          if (list[i].children) {

            let node = getParentId(list[i].children, id);

            if (node !== undefined) {

              return node.concat(list[i]);

            }

          }

        }

      }

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

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

相关文章

【element-ui】form表单动态修改rules校验项

在项目开发过程中,该页面有暂存和提交两个按钮,其中暂存和提交必填项校验不一样,此时需要动态增减必填项校验 ,解决方法如下: 增加rules校验项 this.$set(this.formRules,name,[{required:true,message:请输入名称,t…

【python】anaconda使用指南

安装anaconda 访问官方 官网链接注册并登陆安装 无脑下一步即可配置path D:\ProgramData\anaconda3D:\ProgramData\anaconda3\ScriptsD:\ProgramData\anaconda3\Library\binD:\ProgramData\anaconda3\Library\mingw-w64\bin 进入anaconda环境 # 查询版本 conda --version# …

Layui快速入门之第十三节 日期与时间选择器

目录 一:基本用法 API 渲染 属性 弹出提示 2.8 获取实例 2.8 解除实例绑定 2.8 关闭日期面板 2.7 获取某月的最后一天 二:常规用法 三:多类型选择器 四:范围选择 五:直接静态显示 六:更多功能…

断点测试怎么做?一文教你用Charles 工具做好接口测试!

在测试工作过程中,我们经常会在程序的某一行或者某一环节设置断点,在程序请求的过程中,修改断点处的参数、请求或者响应,借此定位问题,这就是所谓的断点测试。这类断点测试主要用于接口测试。 断点测试可以通过查看接…

Dubbo常考知识点

Dubbo常考知识点 Dubbo⽀持哪些负载均衡策略Dubbo是如何完成服务导出的?Dubbo是如何完成服务引⼊的?Dubbo的架构设计是怎样的? Dubbo⽀持哪些负载均衡策略 随机:从多个服务提供者随机选择⼀个来处理本次请求,调⽤量越…

C语言关于自定义字符函数和字符串函数的相关笔试题(找工作必看)

本篇字符函数和字符串函数 求字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数介绍 strncpy strncat strncmp 字符串查找 strstr strtok 错误信息报告 strerror 内存操作函数 memcpy memmove memset memcmp 在我们笔试时,很…

mysql限制用户登录失败次数,限制时间

mysql用户登录限制设置 mysql 需要进行用户登录次数限制,当使用密码登录超过 3 次认证链接失败之后,登录锁住一段时间,禁止登录这里使用的 mysql: 8.1.0 这种方式不用重启数据库. 配置: 首先进入到 mysql 命令行:然后需要安装两个插件: 在 mysql 命令行中执行: mysql> INS…

易基因|ONT:三代原核甲基化在痤疮杆菌噬菌体表观遗传印迹中的工程选择性研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 痤疮表皮杆菌(Cutibacterium acnes,C.acnes)是一种革兰氏阳性细菌,是人类皮肤微生物组成员。尽管是最丰富的皮肤共生体,但某些…

linux开机自动启动java的jar包项目及开机自动启动Nacos的配置

linux开机自动启动java的jar包项目及开机自动启动Nacos [开机自动启动Nacos的配置 ](https://blog.csdn.net/weixin_42225792/article/details/129805877)[开机自动启动jar包项目的配置 ](https://blog.csdn.net/qq_42320934/article/details/131698450) 开机自动启动Nacos的配…

详细介绍下VLAN隔离与VLAN之间互联

什么VLAN? VLAN代表虚拟局域网(Virtual Local Area Network),它是一种在物理网络基础上创建逻辑上独立的虚拟网络的技术。VLAN允许将一个局域网划分为多个虚拟的逻辑网络,这些虚拟网络在逻辑上相互隔离,就…

支付宝开发问题:很抱歉,系统监测到你的支付宝账号有异常,入驻失败,如需帮助请拨打热线

想开发个支付宝小程序,结果困难重重啊 妹的,这一个星期一直都被这个问题困扰,找了一个个体户资质,一直失败,专门去注册了一个公司,还是提交失败。 给支付宝客服打电话,跟没打一样,…

外包干了2个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

4. 寻找两个正序数组的中位数

4. 寻找两个正序数组的中位数 有序数组,二分/分治。 class Solution {public double findMedianSortedArrays(int[] nums1, int[] nums2) {int m nums1.length;int n nums2.length;int left (m n 1) / 2;int right (m n 2) / 2;// 将偶数和奇数的情况合并…

Windows系统如何部署Wing FTP Server与公网远程访问【内网穿透】

Wing FTP Server安装配置结合内网穿透实现公网访问本地站点 文章目录 Wing FTP Server安装配置结合内网穿透实现公网访问本地站点前言1.Wing FTP Server下载安装2.Wing FTP Server配置部署3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3…

使用 sklearn 进行数学建模的通用模板

前言 无论是本科和研究生都会有的数学建模含金量还是很高的,下面将介绍一下进行数学建模的一些基本操作方法,这里主要是利用sklearn 进行建模,包括前期的一些数据预处理以及一些常用的机器学习模型以及一些简单粗暴的通用建模步骤&#xff0…

在 Simscape Electrical 中对两区 MVDC 电动船的建模和仿真(Simulink实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

leetcode top100(6) 三数之和(双指针)

/*** 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请* <p>* 你返回所有和为 0 且不重复的三元组。* <p>* 注意&#xff1a;答案中不可…

springboot集成mybatis-plus

一、在spring boot中配置mybatis-plus 1、创建一个spring boot项目&#xff0c;注意勾选mysql 2、在pom.xml文件中添加mybatis-plus的依赖包 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0&qu…

西门子 S7 协议解析

目录 1 建立连接 2 读数据 3 写数据 1 建立连接 03 00 00 16 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A &#xff08;第一次握手报文&#xff09; 03 00 报文头 00 16 数据总长度&#xff1a;22 11 E0 00 00 00 01 00 C1 02 10 00 C2 02 03 01 C0 01 0A 报文结束…

Llama-2 推理和微调的硬件要求总结:RTX 3080 就可以微调最小模型

大语言模型微调是指对已经预训练的大型语言模型&#xff08;例如Llama-2&#xff0c;Falcon等&#xff09;进行额外的训练&#xff0c;以使其适应特定任务或领域的需求。微调通常需要大量的计算资源&#xff0c;但是通过量化和Lora等方法&#xff0c;我们也可以在消费级的GPU上…