通过父级id 递归找到所有子类
选中的元素
数据结构大概:
data: [ {id:123321321, name: '哇哈哈' }, {id:123321321, name: '哇哈哈' , childrenList: [{id:888888, name: '起飞' }]}]
思路:
1、是否能在第一层找到选中的id,如果找到了,就开始递归该对象,直到找到最底层的子类
2、如果没有在第一层找到选中的id,开始递归该对象,直到找到匹配选中id的对象,而后执行第一步,找到最底层的子类
实现代码:
/*
* 第一步
* selectList 树选择控件选中的元素
*/let categoryList = []const findSonByRecursion = (selectList) => { // 递归树查找最底层的类目selectList.forEach((item) => {treeDataSource.forEach((tree) => {if (item.value === tree.id) {// 第一层就找到了hasChildrenList(tree); // 开始下渗查找最底层的类目} else {// 否则递归继续下渗查找if (tree.childrenList) {findChildrenList(tree.childrenList, item.value);}}});});};/*
* 第二步
*/const hasChildrenList = (tree) => { // 已经匹配上id的对象,找到该对象的最底层if (tree.childrenList) {tree.childrenList.forEach((item) => {if (item.childrenList) {hasChildrenList(item);} else {categoryList.push(item);}});} else {categoryList.push(tree);}};/*
* 第三步
*/const findChildrenList = (dataList, value) => {dataList.forEach((item) => {// childrenList 第一层就找到了if (item.id === value) {if (item.childrenList) {hasChildrenList(item); // 查找是否还有子集} else {categoryList.push(item);}} else if (item.childrenList) {// 否则继续下渗查找findChildrenList(item.childrenList, value);}});};
通过父级id 递归找到所有子类相关推荐
- php 根据父级id查出,php,_三级分类 like查询 查询到很多id 需要找到对应的父级id 并根据父级id组合 应该怎么根据父级id将数据组合在一起呢?,php - phpStudy...
三级分类 like查询 查询到很多id 需要找到对应的父级id 并根据父级id组合 应该怎么根据父级id将数据组合在一起呢? 这是获取到的数据 父级id为parent_id Array ( [0] = ...
- 子标签获取父级Id值
子标签获取父级id值 1.首先,通过子标签传递,使用"this": 2.function获取所传递的值: 代码如下 标签中(id = "show1") oncl ...
- 通过父级id获取到其下所有子级(无穷级)——Mysql函数实现
[需求]某用户只能查看其自己信息及其下级信息,涉及通过该用户所在部门获取其下所有部门(多层)id集合. 步骤一:对数据库进行设置: set global log_bin_trust_function_ ...
- java ztree json_java 树形转换JSON 工具类 / 树形子父级菜单递归 JSON 格式
实体类: package tree; import java.util.List; /** * *2018-11-30 */ public class Menu { // 菜单id private S ...
- vue如何获取tree当前选中的节点_vue中element-ui 树形控件-树节点的选择(选中当前节点,获取当前id并且获取其父级id)...
出处: Element-ui官网给的方法 getCheckedKeys() { console.log(this.$refs.tree.getCheckedKeys()); }, 1 这种只有在所有子 ...
- antd树型选择控件选择父级_element的tree树形菜单回显、父级半勾选
解决的问题: 1. 当拿到了后台的数据,使用id去渲染选中的节点时,如果父级id包含在id数组里,而此id下面的子节点只有部分选中的情况下,此父级id下面得所有子节点全部被选中了. 2. 当需要保存当 ...
- fastadmin 子级菜单展开合并,分类父级归纳
效果如下: 这里踩过一个坑,fastadmin默认的展开合并预定义处理的变量是pid. 所以建表时父级id需要是pid: 当然不是pid也没关系,笔者这里是classify_id,多加一步处理一样能实 ...
- vue element-UI的树形结构,父级关联,返回数据反选的问题
因为element-ui的树形结构是添加了父级的联动,没有办法单独取消,那么就有一个问题,比如说在做用户权限分配的时候,添加选择是没有问题的,选择自己要check的节点,通过下面这个方法可以将父级ID ...
- 调用父级方法_通信:找到任意组件实例的findComponents系列方法,5个终极方案
已经介绍了两种组件间通信的方法:provide / inject 和 dispatch / broadcast.它们有各自的使用场景和局限,比如前者多用于子组件获取父组件的状态,后者常用于父子组件间通 ...
最新文章
- matlab对图像信号进行频谱分析及滤波,数字信号处理课程设计---应用 Matlab对信号进行频谱分析及滤波...
- table control 光标定位控制
- jquery选择器(转载)
- matlab绘制烟花,[原创]利用MATLAB燃放烟花(礼花)
- 微信开发必看,使用.Net Core 开发微信跨平台应用
- 22张图片倒叙霍金:我爱宇宙也爱这苦乐人生
- Opencv--从CalibrateCamera到SolvePnp(二)
- 一次难忘的 MTS 故障的排除过程
- Java BIO 聊天程序
- 被苹果摆了一道的高通,亮出了一张“小米”牌
- nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
- 三维点云学习(4)5-DBSCNA python 复现-2-kd-_tree加速
- hdoj1116【欧拉回路】
- 由程序猿yyyy-MM-dd跨年Bug引发的深思
- secureCRT 连接虚拟机的时候连接失败
- linux波浪线是什么路径,波浪线符号(linux运维中特殊符号)
- CALayer和Retina显示屏的高分辨率的支持
- 【mediacodec】MediaRecorder--MediaCodec
- iOS-常见三种加密(MD5、非对称加密,对称加密)
- 完美解决!无法启动此程序,因为计算机中丢失libmysql.dll解决方案(详细版!)
热门文章
- 【原创】【SPI】SPI通信协议介绍
- Linux定时清理日志
- 简单常用的http压测工具
- 计算机大数据的前景方向_大数据十大发展方向!
- PCL——超体素(SuperVoxel)、超体聚类分割
- 手机APP开发:学JAVA转安卓APP开发是不是很容易?
- 安全认证宇宙之用户认证0x01
- 第二章 离散时间信号和系统的时域描述分析 2.2.2 线性时不变系统
- Java开发培训班该怎样选择?
- Dbeaver报错:The server time zone value ‘etd‘ is unrecognized