......

data: () => ({
  // 数据
dt: [{
id: '1',
children: [
{
id: '1-1',
children: [
{
id: '1-1-1',
children: []
}
]
},
{
id: '1-2',
children: [
{
id: '1-2-1',
children: []
}
]
}
]
}, {
id: '2',
children: [
{
id: '2-1',
children: [
{
id: '2-1-1',
children: [{ id: '2-1-1-1', children: [] }]
}
]
}
]
}],
path: [],// 保存递归到的每一层路径
curPath: [], // 当前路径
curId: '2-1-1', // 目标节点
isRecursion: true // 是否已找到目标几点
}),
methods: {
handleTestClick () {
const { dt } = this
this.path = []
dt.forEach((item, index) => {
this.path[index] = [item.id] // 将每一层的路径保存下来
this.recursion(item.children, index)
}) console.log(this.path, this.curPath)
},
recursion (ary, index) {
for (let i = 0; i < ary.length; i++) {
const item = ary[i]
this.isRecursion && this.path[index].push(item.id) // 将父节点id添加到当前层路径
if (this.curId === ary[i].id) {
this.curPath = this.path[index] // index层的路径就是目标节点的路径
this.isRecursion = false
break
}
if (item.children && item.children.length && this.isRecursion) {
this.recursion(item.children, index)
}
}
}
}

......

  -- 经过地狱般的磨练,创造出天堂的力量。流过血的手指,弹出世间的绝唱!--

个人博客对应地址:http://www.devloper.top/article/detail/c8a20870-3329-11eb-8d80-e5b0e11d80e6

JavaScript之递归查找所有父节点的更多相关文章

  1. sql 递归显示所有父节点

    1.我先建两个表 一个表示项目及级别 另一个表示项目最后一级中包含内容.两个表的数据如图 CREATE TABLE [dbo].[yq_Project]( ,) primary key, ) NOT ...

  2. mysql 递归查找所有子节点

    select dept_id from ( select t1.dept_id,t1.parent_id, if(find_in_set(parent_id, @pids) > 0, @pids ...

  3. SQL 递归树 子父节点相互查询

    if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar( ...

  4. 转载:SQL 递归树 子父节点相互查询

    if object_id('[tb]') is not null drop table [tb] go create table [tb]([modeid] int,modename varchar( ...

  5. Mysql 实现 向上递归查找父节点并返回树结构

    需求:通过mysql 8.0以下版本实现,一个人多角色id,一个角色对应某个节点menu_id,根节点的父节点存储为NULL, 向上递归查找父节点并返回树结构. 如果只有叶子,剔除掉; 如果只有根,只 ...

  6. T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

    -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ParamType_V2_0 where Type_Id=316-- ...

  7. SQL 递归查询(根据指定的节点向上获取所有父节点,向下获取所有子节点)

    --------------------01.向上查找所有父节点-----------------WITH TEMP AS (SELECT * FROM CO_Department WHERE ID= ...

  8. [SQL]T-Sql 递归查询(给定节点查所有父节点、所有子节点的方法)

    T-Sql 递归查询(给定节点查所有父节点.所有子节点的方法)   -- 查找所有父节点with tab as( select Type_Id,ParentId,Type_Name from Sys_ ...

  9. JavaScript通过父节点ID递归生成JSON树

    JavaScript通过父节点ID递归生成JSON树: · 实现思路:通过递归实现(第一次递归的时候查询出所有的父节点,然后通过当前父节点id不断地去查询所有子节点,直到递归完毕返回)   · 代码示 ...

随机推荐

  1. 【LeetCode】874. Walking Robot Simulation 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 模拟 日期 题目地址:https://leetcod ...

  2. 分析一个简单的goroutine资源池

    分析一个简单的goroutine资源池 tunny. 从资源池中获取goroutine并进行处理的逻辑如下: tunny将goroutine处理单元封装为workWrapper,由此可以对gorout ...

  3. 慢 SQL 优化

    # 导致SQL执行慢的原因 1. 硬件问题.如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等. 2. 没有索引或者索引失效.(一般在互联网公司,DBA会在半夜把表锁了,重新建立一遍索引,因为当你 ...

  4. MySQL定时备份数据库方案

    MySQL数据备份 1.备份全部数据库的数据和结构 mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql 2.备份全部数据库的结构(加 ...

  5. 云南农职《JavaScript交互式网页设计》 综合机试试卷③——实现二级分类菜单

    一.语言和环境 实现语言:HTML,CSS,JavaScript,JQuery. 开发环境:HBuilder. 二.题目(100分): 使用Jquery和JavaScript实现二级分类菜单管理 点击 ...

  6. Java二、八、十、十六进制介绍

    1.说明 在Java中整数有四种表示方式, 分别为十进制,二进制,八进制,十六进制, 其中十进制就是平常最熟悉,使用最多的进制: 二进制是在计算机中使用最多的进制, 八进制和十六进制都是基于二进制的, ...

  7. SpringCloud创建Config多客户端公共配置

    1.说明 基于已经创建好的Spring Cloud配置中心, 在配置中心仅保存一套配置文件, 多个客户端可以通过配置中心读取到相同的配置, 而不需要在每个客户端重复配置一遍, 下面以一个Config ...

  8. Selenium_使用switch_to.frame处理网页框架切换(13)

    与在新窗口打开一个网页后需要切换窗口才能定位元素一样,在iframe标签中的元素也不能直接定位,需要切换到对应的iframe框架中才能进行元素定位. 完成网页框架切换操作需要用selenium中的两个 ...

  9. vue - 指令创建 vue工程

    1.在需要创建工程的文件夹里打开cmd 执行 vue -V 看看版本号是否正常, 创建工程 vue create [工程名称] 如:vue create mytestvue 然后会弹出选择 按方向键, ...

  10. centos7 常规修改信息(比较杂的)持续更新

    修改主机名 临时修改主机名 hostname syscal 永久修改主机名,修改后要重启系统 vi /etc/hostname 修改本地hosts 修改本地hosts,与windows的本地的host ...