js实现树形结构化

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣 日常分享前后端知识

前言

今天来讲一下平常我们做权限系统中的树形结构知识
就是如何把对应关系的结构数据转换为可以一个树形结构

const data = [{id: 2,pid: 0,path: '/course',name: 'Course',title: '课程管理'},{id: 3,name: 'CourseOperate',path: 'operate',link: '/course/operate',pid: 2,title: '课程操作'},{id: 4,name: 'CourseInfoData',path: 'info_data',link: '/course/operate/info_data',pid: 3,title: '课程数据'},{id: 5,name: 'CourseAdd',path: 'add',link: '/course/add',pid: 2,title: '增加课程'},{id: 6,pid: 0,path: '/student',name: 'Student',title: '学生管理',},{id: 7,name: 'StudentOperate',path: 'operate',link: '/student/operate',pid: 6,title: '学生操作'},{id: 8,name: 'StudentAdd',path: 'add',link: '/student/add',pid: 6,title: '增加学生'},{id: 9,name: '123123',path: '234234',link: '/student/add',pid: 8,title: '增加学生'},{id: 10,name: '234234',path: '345345',link: '/student/add',pid: 9,title: '增加学生'},{id: 11,name: '345345',path: '456456',link: '/student/add',pid: 10,title: '增加学生'}
];

数据大概是以上这样的
要给他转换为树形结构
可以开始直接操作了

基本数据

// 树形结构数据结构化/*** [*   {id: 2,pid: 0,path: '/course',name: 'Course',title: '课程管理',children: [{id: 3,name: 'CourseOperate',path: 'operate',link: '/course/operate',pid: 2,title: '课程操作',children: [{id: 4,name: 'CourseInfoData',path: 'info_data',link: '/course/operate/info_data',pid: 3,title: '课程数据'}]},{id: 5,name: 'CourseAdd',path: 'add',link: '/course/add',pid: 2,title: '增加课程'}]},*    {id: 6,pid: 0,path: '/student',name: 'Student',title: '学生管理',children: [{id: 7,name: 'StudentOperate',path: 'operate',link: '/student/operate',pid: 6,title: '学生操作'},{id: 8,name: 'StudentAdd',path: 'add',link: '/student/add',pid: 6,title: '增加学生'}]}* ]

结构这样

两种方式处理数据

直接上代码 可以自己调试

const treeData = formatDataTree(data);console.log(treeData);// function formatDataTree (data) {
//   let parents = data.filter(p => p.pid === 0),
//       children = data.filter(c => c.pid !== 0);//   dataToTree(parents, children);//   return parents;
//   // parents  childrens array []
//   function dataToTree (parents, children) {
//     parents.map(p => {
//       children.map((c, i) => {
//         if (c.pid === p.id) {
//           let _children = JSON.parse(JSON.stringify(children));
//           _children.splice(i, 1);
//           dataToTree([c], _children);
//           if (p.children) {
//             p.children.push(c);
//           } else {
//             p.children = [c];
//           }
//         }
//       });
//     })
//   }
// }function formatDataTree (data) {let _data = JSON.parse(JSON.stringify(data));return _data.filter(p => {const _arr = _data.filter(c => c.pid === p.id);_arr.length && (p.children = _arr);return p.pid === 0;});
}

打印结果

在这里插入图片描述

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

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

相关文章

初中计算机课教什么时候,初中计算机教学课程教学方法探讨

黄其浩摘要:初中计算机课程的教学工作对于提升学生的综合素质有着十分重要的作用,本文深入分析了初中计算机教学中存在的问题,并且从两个角度提出了初中计算机教学中的解决问题的思路,为初中计算机课程教学工作提出了有效的管理方…

44. Wildcard Matching

description: 匹配字符串,具体看例子 Given an input string (s) and a pattern (p), implement wildcard pattern matching with support for ? and *. ? Matches any single character. * Matches any sequence of characters (including the empty sequence). …

Android makefile

示例 /** Android.mk文件必须从这一行定义开始,my-dir宏是build系统自带的函数,返回当前目录 */ LOCAL_PATH : $(call my-dir) /** CLEAR_VARS是build系统自带的变量,指示makefile脚本清除所有LOCAL_XXX变量,除了LOCAL_P…

viewer.js实现预览效果

我是歌谣 放弃很容易 但是坚持一定很酷 微信公众号关注小歌谣 日常分享前后端知识 前言 最近涉及一个移动端项目 需要把其中的图片变成可预览的图片 听学弟说 可以利用viewer进行实现 首先 我们需要做的就是先写一个简单demo 先实现其中的效果 实现效果 代码 <!doct…

android 论坛_如何看待百度android吧萎靡现象与吧主的无所作为

百度android吧当初被誉为贴吧中的机锋论坛&#xff0c;现如今缺惨不忍睹&#xff0c;这一切究竟是百度资本家的阴谋还是吧主个人无所作为&#xff1f;然而就此事本人与android吧吧主展开讨论以及对其能力的质疑…这本来只是对android吧吧主随意加精普通的质问…然而该吧主却说我…

计算机控制系统脉冲传递函数,第6.2课 (理解)计算机控制系统理论基础—脉冲传递函数.pdf...

第六章计算机控制系统理论基础计算机控制系统理论基础本章结构• 6.1 概述• 6.2 采样与采样定理• 6.3 信号的恢复与保持• 6.4 Z变换和Z反变换• 6.5 脉冲传递函数6.4 Z变换和Z反变换1 Z变换的由来• 在 《自动控制原理》中&#xff0c;线性连续系统的动态特性可以由微分方…

logisim优先编码器怎么用_变频电机为什么要用编码器?又该如何选型?

在自动化控制中经常会碰到各种电机的控制&#xff0c;在输送带、升降机、提升小车等较大功率的电机大部分是用变频电机&#xff0c;各个品牌PLC变频器驱动控制变频电机也很普及了。但是&#xff0c;用户经常会有这样那样的问题出现&#xff1a;变频电机为什么要装编码器?不装编…

修复计算机语言设置是哪个键,Windows语言设置后修复计算机的方法

当我们给我们的windows语音设置后&#xff0c;电脑可能会出现点问题&#xff0c;这个时候我们需要修复一下计算机&#xff0c;其中要进入BIOS的操作可能会难倒一部分新手用户&#xff0c;那么该如何操作呢&#xff1f;接下来我给大家整理了该如何一步步设置&#xff0c;一起来了…

sql 内置函数

sql server自带的函数比较多&#xff0c;下面我把自己经常用到的总结一下: 1、getdate() 得到当前系统时间 2、datediff(差距单位&#xff0c;前时间&#xff0c;后时间)比较时间得到时间差 例&#xff1a;select datediff(day,2011-03-14,getdate()) 结果为1 注意&#xff1a;…

笔记本电脑摄像头不能用_聊一款想代替笔记本电脑的产品

每次苹果发布iPad&#xff0c;部分自媒体KOL的言论总让我有一种自己必须转行的错觉&#xff0c;因为在他们眼中&#xff0c;笔记本电脑即将被iPad代替了&#xff0c;甚至还有人称iPad为“笔记本杀手”。谢谢&#xff0c;有被笑到。但一想到诺基亚当年就是这么傲慢地对待iPhone&…

EXCEL数据汇总-数据透视图

转载于:https://www.cnblogs.com/RogerLu/p/11194629.html

乘法最快的算法计算机,人类史上最快乘法算法诞生

人类用四千年碰到乘法运算天花板&#xff1a;史上最快乘法算法诞生中科院物理所 2019-04-16 12:21:55图片&#xff1a;MENGXIN LI/QUANTA MAGAZINE四千年前&#xff0c;古巴比伦人最先发明了乘法。而历史上&#xff0c;数学家也在不断简化乘法的步骤&#xff0c;直到上个月&…

android menu菜单 实现点击后不消失_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥...

Windows系统发展至今&#xff0c;文件夹的颜色和样式始终是没有太多的变化&#xff0c;一直是一成不变的shi黄色&#xff01;尽管我们可以通过右键>属性>自定义>来修改文件夹的图标&#xff0c;但这种方法不仅需要我们自己去找图标文件&#xff0c;如果文件夹多了&…

电源功耗压力测试软件,开关电源负载测试经验分享——这篇三分钟小文章着实令人“心动”...

开关电源&#xff0c;又称交换式电源、开关变换器&#xff0c;是一种高频化电能转换装置&#xff0c;是电源供应器的一种。开关电源利用的切换晶体管多半是在全开模式及全闭模式之间切换&#xff0c;这两个模式都有低耗散的特点&#xff0c;切换之间的转换会有较高的耗散&#…

http抓包工具推荐WSockExpert/httpwatch/HttpAnalyzer/DebugBar

平常有事没事可以把玩下这几个抓包软件&#xff0c;蛮有意思&#xff01; 抓包分析源地址和目标url一般有下面几个软件&#xff1a;第一个是国产的WSockExpert。以前大家上网漏洞的时候很多时候都用到他。易上网&#xff0c;功能一般。但自身dll文件容易被认为木马删除。适用于…

ref是什么意思_终于有人说出A股不敢说的话:为什么股价不断下跌,大单却持续流入,你知道是什么缘由吗?...

(本文由公众号越声策略(yslc188)整理&#xff0c;仅供参考&#xff0c;不构成操作建议。如自行操作&#xff0c;注意仓位控制和风险自负。)炒股想成功牢记以下几点&#xff1a;第一、选股方法。字面意思很简单&#xff0c;但是也是个集大成的东西。你靠着均线能选股&#xff0c…

解决:Module not found: node_modules\sass-loader\package.json (directory description file)

npm uninstall node-sass npm install node-sasslatest转载于:https://www.cnblogs.com/furenjian/p/11198914.html

xp计算机关闭139端口,小编搞定xp系统电脑关闭139端口的图文方法

我们在使用xp系统的过程中,经常需要对xp系统电脑关闭139端口进行设置&#xff0c;可能很多用户都不知道怎么对xp系统电脑关闭139端口进行设置&#xff0c;但当我们遇到对xp系统电脑关闭139端口的设置方法非常简单&#xff0c;只需要点击“开始”&#xff0c;选择“运行”&#…

c++中计算2得n次方_《一元二次方程》单元试卷,从中总结出5个考点,初三学生应知道...

俗话说&#xff1a;“工欲善其事&#xff0c; 必先利其器。 ” 学好一元二次方程必须熟练掌握它的重要考点&#xff0c;再通过有针对性地做练习&#xff0c;提高解题能力。为了帮助大家切身感受一元二次方程这章的重要考点&#xff0c;下面将为大家详细解析一份单元模拟试卷&am…

C和C++编程中static关键字的含义-修饰函数和变量

static用来修饰一个函数的时候&#xff0c;表示的意思如下&#xff1a; 1、表示该方法只在本c文件中有效。在其他c文件中无法访问这个方法。 2、static的方法的定义一般不放在.h文件中&#xff0c;因为这个方法只在一个c文件中有效。一般直接将该方法定义在c文件的开头部分就可…