javascript树形结构根据子节点遍历所有父节点 获取全路径 el-cascader树形结构回显

2023-11-11

根据子节点找全部父 ,el-cascader树形结构回显

1.子节点中没有父节点的id等信息

data为树结构数据,id为子节点的id,indexArray默认给个[]就可以

	// vue中这样调用
	// treedata为树结构数据
	// nodeId 为子节点的id
	this.findIndexArray(treedata,nodeId,[]);


	// 子找父 子节点信息中没有父节点
    findIndexArray(data, id, indexArray) {
      let arr = Array.from(indexArray);
      for (let i = 0, len = data.length; i < len; i++) {
        arr.push(data[i].id);
        if (data[i].id === id) {
          return arr;
        }
        let children = data[i].children;
        if (children && children.length) {
          let result = this.findIndexArray(children, id, arr);
          if (result) return result;
        }
        arr.pop();
      }
      return null;
    },

2.子节点中有父节点的id

	// vue中调用
	// treedata为树结构数据
	// nodeId 为子节点的id
	this.getParentIdList(treedata,nodeId);

 	// 根据id 找所有父
    getParentIdList(data2, nodeId2) {
      var arrRes = [];
      if (data2.length == 0) {
        if (nodeId2) {
          arrRes.unshift(data2.id);
        }
        return arrRes;
      }
      let rev = (data, nodeId) => {
        for (var i = 0, length = data.length; i < length; i++) {
          let node = data[i];
          if (node.id == nodeId) {
            arrRes.unshift(node.id);
            rev(data2, node.parentId);
            break;
          } else {
            if (node.children) {
              rev(node.children, nodeId);
            }
          }
        }
        return arrRes;
      };
      arrRes = rev(data2, nodeId2);
      return arrRes;
    },

测试

实测根据情况调用两种之一,结果如下图,数组形式,配合Element-ui级联选择器 el-cascader就可以直接回显数据了。

this.findIndexArray(treedata,"4fdfd353cdfd4506851408648c7ecd41",[]);
this.getParentIdList(treedata,"4fdfd353cdfd4506851408648c7ecd41");

在这里插入图片描述
el-cascader树形结构回显成功,
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript树形结构根据子节点遍历所有父节点 获取全路径 el-cascader树形结构回显 的相关文章

随机推荐

  • 【翻译】 2.6 中的 4K 堆栈 [发布于 2004 年 5 月 12 日,作者:corbet

    传统上 Linux 内核在大多数架构上都使用 8KB 内核堆栈 该堆栈必须满足系统调用可能产生的任何调用序列 以及可能同时调用的任何 硬或软 中断处理程序的需要 实际上 在稳定的内核中 堆栈溢出的情况几乎闻所未闻 内核开发人员早已学会避免使
  • 【Docker教程(一)】WSL2、Docker以及docker-compose安装及环境配置

    一 如何安装WSL2 二 如何安装和配置docker 三 如何安装docker compose 四 如何基于ip代理池获取代理ip 注意 先安装WSL2 再安装docker和docker compose 参考资料 软件下载及安装教程 a d
  • JavaScript循环语句和分支语句

    JavaScript中的分支语句 1 if分支语句 2 if else语句 3 if else if else语句 4 switch语句 注 if语句可以单独存在 else语句不能单独存在 else找离自己最近的同一级别的if搭配成对 在i
  • linux创建711文件,linux权限---【600,644,700,755,711,666,777】,644711

    linux权限 600 644 700 755 711 666 777 644711 chmod命令详解 使用权限 所有使用者 使用方式 chmod cfvR help version mode file 说明 Linux Unix 的档案
  • 用streamlit,几行代码就可以拥有漂亮图表!

    大家注意 因为微信最近又改了推送机制 经常有小伙伴说错过了之前被删的文章 比如前阵子冒着风险写的爬虫 再比如一些限时福利 错过了就是错过了 所以建议大家加个星标 就能第一时间收到推送 大家好 我是爱搞事情的了不起 之前我们爬过懂车帝的车型评
  • c语言报告 列主元lu分解,求助:求个R语言的选主元LU分解。

    推荐答案 上善若水666 来自团队 乐于助人2018 04 21 采纳率 57 等级 50 已帮助 96万人 可以 这是数值分析书上的定理 就是存在排列矩阵P 对换矩阵的乘积 使得PA LU 这个定理说明先对A进行对换矩阵的行得到PA 然后
  • 【面试题】1、总结面试题1

    1 Java语言有哪些特点 1 面向对象 Java是一种面向对象的语言 支持封装 继承和多态等面向对象的特性 Java特别强调类和对象的关系 要求所有代码都必须位于类中 和Java一样很流行的Python也是面向对象的语言 但它对面向对象的
  • PVE虚拟化平台之安装Ubuntu Desktop系统

    PVE虚拟化平台之安装Ubuntu Desktop系统 一 Ubuntu介绍 1 1 Ubuntu简介 1 2 Ubuntu版本 1 3 ubuntu命名规则 二 上传镜像到PVE 2 1 检查PVE环境 2 2 上传镜像到PVE 三 新建
  • ARM软件测试库STL( Software Test libraries )介绍

    原文链接 https www arm com zh TW products development tools embedded and software software test libraries Faster Safety Comp
  • XXL-JOB 分布式定时任务调度平台

    文章目录 1 概述 2 使用 1 概述 首先我们要知道什么是XXL JOB 官方简介 XXL JOB是一个分布式任务调度平台 其核心设计目标是开发迅速 学习简单 轻量级 易扩展 现已开放源代码并接入多家公司线上产品线 开箱即用 XXL JO
  • JavaScript/ES6中的Object

    记录Object构造函数的一些静态方法 Object是编程中常见的一种构造函数 创建一个对象包装器 为什么说是创建了一个对象包装器 Object构造器会根据传入的参数的类型 将参数包装成具体的对象 如有数字对象 boolean对象 字符串对
  • 程序设计模式23+1种定义+UML图(有部分分析和联用)

    程序设计模式这门课已经学完了 复习的时候做了一个这样的汇总 希望可以给后来学习这门课的同学一些帮助 设计模式的分类 根据目的 模式是用来做什么的 可分为创建型 Creational 结构型 Structural 和行为型 Behaviora
  • 问题1:将静态库编译成动态库

    一 描述 1 多个同事间合作开发一个软件项目 每个人负责一部分模块开发 商定好彼此的对外接口 编程实现后 最后需要将所有人的开发代码编译链接到一起 生成一个最终目标文件 2 由于多人开发 若全部采用源文件编译 编译时文件数量众多 编写Mak
  • AES加解密,Base64编解码

    AES是什么 美国国家标准技术研究所在2001年发布了高级加密标准 AES AES是基于数据块的加密方式 即 每次处理的数据是一块 16字节 当数据不是16字节的倍数时填充 这就是所谓的分组密码 区别于基于比特位的流密码 16字节是分组长度
  • POSIX多线程程序设计(第4章:使用线程的几种方式)

    1概述 线程编程模型有以下三种方式 模型 说明 流水线 每个线程反复地在数据系列集上执行同一种操作 并把操作结果传递给下一步骤的其他线程 这就是 流水线 方式 即流水线上的线程对数据执行同一种操作 如简单的加1 再把数据的操作结果传递给下一
  • 戴尔服务器关闭系统自检,戴尔开机自检取消操作方法

    摘要 腾兴网为您分享 洛克王国菲菲 美丽拍 nba2k17选秀名单 瞩目会议 助理来也 hevc 奥迪出行 优奢易拍 威海公积金 久币网 奸笑表情包 gocom html按钮 爱物网 麦乐迪 jscript教程 苹果wifi密码查看等知识经
  • MySQL中select语句的执行顺序

    其实SQL语句并不是按照书写的顺序执行的 了解正确的执行顺序有助于我们更好的理解数据库 select语句的完整书写顺序如下 select distinct 字段列表 from 左表 连接类型 JOIN 右表 on 多表条件 where 条件
  • c语言学完数组就可以完成的小游戏--三子棋

    小游戏嘛 再简单也要有个菜单不是 菜单 int menu printf 欢迎来到稻草人游戏 n printf n printf 1 play n printf 2 退出 n printf n 这里我们利用switch语句完成菜单功能的选择
  • [小白进阶日记]JDK12 ZIP版配置教程

    JDK12 ZIP版配置教程 JDK 12 ZIP版配置教程 JDK 12 ZIP版配置教程 JKD下载地址 https download csdn net download qq 41684083 11472693 1 首先解压压缩包 2
  • javascript树形结构根据子节点遍历所有父节点 获取全路径 el-cascader树形结构回显

    根据子节点找全部父 el cascader树形结构回显 1 子节点中没有父节点的id等信息 data为树结构数据 id为子节点的id indexArray默认给个 就可以 vue中这样调用 treedata为树结构数据 nodeId 为子节