我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用JavaScript怎么构造elementUI树状菜单

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用JavaScript怎么构造elementUI树状菜单

使用JavaScript怎么构造elementUI树状菜单?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

elementUI中自带树状菜单,就是数据结构有点复杂,偏向json风格。

数据库中菜单数据是二维表格,通过parentPk定义上下级,是list型。

需要把list转换成tree的结构。

elementUI树状菜单的数据结构

每个节点有4个属性,id、label、newVal、children数组;

通过children数组包含关系标示上下级。

var treeData={        id: 1,        label: '一级 1',        newVal: "",        children: [{          id: 4,          label: '二级 1-1',          newVal: "",          children: [{            id: 9,            label: '三级 1-1-1',            newVal: "",          }, {            id: 10,            label: '三级 1-1-2',            newVal: "",            children:[{              id: 4444,            label: '四级 1-1-1-4',            newVal: "",            }]          }]        },{          id:22,          label:'二级 22',          newVal:''        }]      }

数据库返回的list

var itemlist =[        {itemCode:'11', itemName:'材料11',itemType:'2',parentPk:'1'},        {itemCode:'111', itemName:'材料111',itemType:'3',parentPk:'11'},          {itemCode:'1111', itemName:'材料1111',itemType:'3',parentPk:'111'},        {itemCode:'1112', itemName:'材料1112',itemType:'3',parentPk:'111'}       ]

设计思路

用递归方法;

  1. 从list中遍历,找parentPk是当前节点的id的对象,组装成node,放到当前节点的children数组;同时,把list的对象删除。

  2. 对新的node,递归执行找子节点的过程。

  3. 退出条件:list为空或者循环list完毕。

具体代码

//root节点全局对象,因为不同的递归执行,要访问的一个tree对象var itemtree ={    id:'1',    label:'物料名称_整机',    children:[]}//数据库返回的菜单list全局对象,因为不同的递归执行,要访问的一个list对象var itemlist =[        {itemCode:'11', itemName:'材料11',itemType:'2',parentPk:'1'},        {itemCode:'12', itemName:'材料12',itemType:'2',parentPk:'1'},        {itemCode:'111', itemName:'材料111',itemType:'3',parentPk:'11'},          {itemCode:'1111', itemName:'材料1111',itemType:'3',parentPk:'111'},        {itemCode:'1112', itemName:'材料1112',itemType:'3',parentPk:'111'}       ]function buildtree(itemtreenode,itemlist){  if (itemlist.length===0) {    console.log('条件结束')    return   }  var j=0   //   var len=0  for(j=0,len=itemlist.length;j<len;j++){    console.log(new Date(),'j==>:',j,'len==>:',len,itemtreenode,itemlist)    if (itemtreenode.id===itemlist[j].parentPk){      var node={id:itemlist[j].itemCode,label:itemlist[j].itemName,children:[]}      itemtreenode.children.push(node)    //       itemlist.splice(j,1)        buildtree(node,itemlist)        }      }  console.log('循环结束')}console.log('begin')buildtree(itemtree,itemlist)  console.log(itemtree)

代码执行结果

使用JavaScript怎么构造elementUI树状菜单

可以看到组装树是正确的。

总结

ps:和设计方案对比,代码不是很完美,list中被引用的元素没有成功移除;移除后,后边会报错。暂时没找到好方法,对性能有点影响。

树data转list代码

与此相反的操作。

var treeData={        id: 1,        label: '一级 1',        newVal: "",        children: [{          id: 4,          label: '二级 1-1',          newVal: "",          children: [{            id: 9,            label: '三级 1-1-1',            newVal: "",          }, {            id: 10,            label: '三级 1-1-2',            newVal: "",            children:[{              id: 4444,            label: '四级 1-1-1-4',            newVal: "",            }]          }]        },{          id:22,          label:'二级 22',          newVal:'',          children:[{id:'2-2-1',label:'三级221',newVal:'',children:[],}]        }]      }var exp=undefinedvar itemlist=[]function tree2list(itemnode){  if(typeof(itemnode)=="undefined"){    console.log('返回:',itemnode)    return  }    if(itemnode.children && itemnode.children.length>0){  var i=0      for(i=0;i<itemnode.children.length;i++){      itemnode.children[i].parentPk=itemnode.id      console.log(itemnode.children[i])      itemlist.push(itemnode.children[i])             this.tree2list(itemnode.children[i])    }  }} console.log('begin')tree2list(treeData,itemlist)console.log(itemlist)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用JavaScript怎么构造elementUI树状菜单

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用JavaScript怎么构造elementUI树状菜单

使用JavaScript怎么构造elementUI树状菜单?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。elementUI中自带树状菜单,就是数据结构有点复杂,
2023-06-15

利用java怎么构造一个无限层级的树形菜单

这期内容当中小编将会给大家带来有关利用java怎么构造一个无限层级的树形菜单,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、构造一个实体类,用来存储节点,所以我们构造的需要四个对象(id,pid,nam
2023-05-31

怎么使用javascript隐藏菜单

这篇文章主要介绍“怎么使用javascript隐藏菜单”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用javascript隐藏菜单”文章能帮助大家解决问题。一、HTML结构首先,我们需要在页面
2023-07-06

怎么使用Vue组件tree实现树形菜单

本篇内容主要讲解“怎么使用Vue组件tree实现树形菜单”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Vue组件tree实现树形菜单”吧!vue 编写的树形菜单,小巧实用,支持vue1.
2023-07-04

怎么使用Vue递归组件实现树形菜单

本文小编为大家详细介绍“怎么使用Vue递归组件实现树形菜单”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Vue递归组件实现树形菜单”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果如下图,点击后打开二级
2023-07-04

使用JavaScript怎么将数组转为树形结构

本篇文章给大家分享的是有关使用JavaScript怎么将数组转为树形结构,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.需求后台给了一个这样的数据让咱前端去转换为树形结构(没
2023-06-15

怎么使用HTML+CSS+JavaScript实现下拉菜单效果

今天小编给大家分享一下怎么使用HTML+CSS+JavaScript实现下拉菜单效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一
2023-07-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录