前端将List列表转化为树型结构(reduce函数)
主要用到了reduce()函数
for循环可以做到的事情reduce()都可以做到,甚至操作起来更加简单方便和高雅。reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素
reduce语法:
array.reduce(function(pre, currentValue, currentIndex, arr), initialValue)
- recude函数接收两个参数,一个为回调函数,一个为初始赋值
- 第一个参数的回调函数又接收四个参数,分别为(初始值或计算结束后的返回值,当前元素,当前元素的索引,当前元素所属的数组对象)
- 第二个参数是传给函数的初始值,非必传
代码:
test() {const list = [{ id: 1, name: 'a' },{ id: 11, name: 'aa', pid: 1 },{ id: 12, name: 'aaa', pid: 1 },{ id: 13, name: 'aaaa', pid: 1 },{ id: 2, name: 'b' },{ id: 22, name: 'bb', pid: 2 },{ id: 23, name: 'bbb', pid: 2 },{ id: 24, name: 'bbbb', pid: 2 },{ id: 3, name: 'c' },{ id: 31, name: 'cc', pid: 3 },{ id: 32, name: 'ccc', pid: 3 },{ id: 33, name: 'cccc', pid: 3 },{ id: 111, name: 'a11', pid: 11 },{ id: 112, name: 'aa11', pid: 11 },{ id: 1121, name: 'aa112', pid: 112 }];
//prev 是我们最终要生成的树型机构
//curr 为当前的数据
//i为索引
//arr为我们整个list
const result = list.reduce(function (prev, curr, i, arr) {curr.children = arr.filter((v) => v.pid === curr.id);if (!curr.pid) {prev.push(curr);}return prev;
}, []);
console.log('list', list);
console.log('tree', result);
},
前端将List列表转化为树型结构(reduce函数)相关推荐
- php删除树结构文件,树型结构列出目录中所有文件的php代码
以树型结构列出指定目录里的所有文件,这样的话,目录下的所有文件便结构清晰的呈现在你的面前,有什么文件你一看便知,很方便的哦. 示例, php; auto-links:false;"> ...
- axure树形表格_Axure教程:可增删改的树型结构
原标题:Axure教程:可增删改的树型结构 今天,教大家如何做一个树型结构,以及节点与节点之间相互交互的内容. 演示地址:http://b0bgsg.axshare.cn/#g=1&p=树 一 ...
- dtree和jquery构建树型结构
对于小型的树型应用来说,dtree是一个不错的选择. 先看一眼dtree给的例子 构造静态树 首先引入css文件和js文件 <link rel="StyleSheet" hr ...
- 【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中...
小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样.如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这 ...
- EF架构~单表一对多集合的插入(树型结构)
单表一对多关系很常见,它是一种树形结构,如系统菜单表,部门表,分类表,这些都可以做成单表一对多关系,而这些表做成一对多关系后,如果通过EntityFramework进行插入操作时,会很方便,EF会自动 ...
- C#实现树型结构TreeView节点拖拽的简单功能,附全部源码,供有需要的参考
为什么80%的码农都做不了架构师?>>> 应用软件是否好用就体现在一些细节操作上,开发人员是否考虑到了很多细节,例如一个树形结构的数据若不支持拖拽功能那用起来会很糟糕一些,用户 ...
- go之树型结构深度理解补充
go之树型结构深度理解补充 在上一篇中借用了 Ilija Eftimov 文章来讲解了tree的定义和一些方法.这篇文章主要是讲解在树型结构中如何判断节点与节点之间的关系. A节点是否是B节点的直接上 ...
- Nestable 可移动拖拽的树型结构的使用(jQuery)
利用jQuery可以制作出很好的树型结构.这里介绍一款最近才找到使用的Nestable 可以拖动. 网页中的效果 http://dbushell.github.com/Nestable/ 具体详细介 ...
- mysql 转成树_Mysql树型结构2种方式及相互转换
Mysql实现树型结构,数据库上常见有2种方式:领接表.预排序遍历树(MPTT). 领接表方式-- 主要依赖于一个 parent 字段,用于指向上级节点,将相邻的上下级节点连接起来,id 为自动递增自 ...
最新文章
- base64编码的作用【转】
- Oracle 数据库用户锁定与解锁,用户锁定最大密码失败次数设置方法,ORA-28000: the account is locked问题解决方法
- All cached global options setting for WordPress
- 树:二叉树的层序遍历算法(超简洁实现及详细分析)
- 红外测距模块 51单片机_[51单片机] HC-SR04超声波测距仪
- Linux下服务器搭建(2)——linux搭建svn服务器详细过程 及 使用TortoiseSVN客户端连接服务器
- EqualLogic全攻略视频[(五)网络优化]
- 制输电线路行波测距PSCAD仿真模型ATP-EMTP
- 极大似然估计(Maximum likelihood estimation)
- 十大排序算法Java版
- 【JS】经典的对联广告代码,JS代码实现
- 首次适应算法 动态分区分配方式的模拟 C语言——课程设计实习
- linux挂载光盘的命令,linux下挂载(mount)光盘镜像文件、移动硬盘
- 人生就像四季,繁华过后终归平淡,不可能一直繁华似锦,不可能一路花香四溢。...
- 获取windows硬件、软件信息的方法
- 全开源即时通讯(IM)系统-仿微信
- 修复自定义标题word题注错误:错误,文档中没有指定样式的文字以及编号无法随章节变化问题
- pandas将excel中多行多列单元格含有多个值拆分为一对一单行显示的方法(explode函数)
- take sth. with a grain of salt
- 李含光《C语言程序设计教程》答案第一——四章