电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

js如何構(gòu)造elementUI樹狀菜單的數(shù)據(jù)結(jié)構(gòu)詳解

瀏覽:124日期:2024-03-26 11:20:07
背景說明

elementUI中自帶樹狀菜單,就是數(shù)據(jù)結(jié)構(gòu)有點復(fù)雜,偏向json風(fēng)格。

數(shù)據(jù)庫中菜單數(shù)據(jù)是二維表格,通過parentPk定義上下級,是list型。

需要把list轉(zhuǎn)換成tree的結(jié)構(gòu)。

elementUI樹狀菜單的數(shù)據(jù)結(jié)構(gòu)

每個節(jié)點有4個屬性,id、label、newVal、children數(shù)組;

通過children數(shù)組包含關(guān)系標(biāo)示上下級。

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:’’}] }

數(shù)據(jù)庫返回的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’} ]設(shè)計思路

用遞歸方法;

從list中遍歷,找parentPk是當(dāng)前節(jié)點的id的對象,組裝成node,放到當(dāng)前節(jié)點的children數(shù)組;同時,把list的對象刪除。 對新的node,遞歸執(zhí)行找子節(jié)點的過程。 退出條件:list為空或者循環(huán)list完畢。 具體代碼

//root節(jié)點全局對象,因為不同的遞歸執(zhí)行,要訪問的一個tree對象var itemtree ={ id:’1’, label:’物料名稱_整機’, children:[]}//數(shù)據(jù)庫返回的菜單list全局對象,因為不同的遞歸執(zhí)行,要訪問的一個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(’條件結(jié)束’) return } var j=0 /*!!注意循環(huán)變量j必須定義為局部變量,否則默認(rèn)全局變量,會導(dǎo)致子節(jié)點丟失*/// 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) /*!! 沒有刪除list元素,否則會導(dǎo)致后續(xù)引用錯誤。代碼不是很完美,一時沒想到完美方法*/ buildtree(node,itemlist)} } console.log(’循環(huán)結(jié)束’)}console.log(’begin’)buildtree(itemtree,itemlist) console.log(itemtree)代碼執(zhí)行結(jié)果

js如何構(gòu)造elementUI樹狀菜單的數(shù)據(jù)結(jié)構(gòu)詳解

可以看到組裝樹是正確的。

總結(jié)

ps:和設(shè)計方案對比,代碼不是很完美,list中被引用的元素沒有成功移除;移除后,后邊會報錯。暫時沒找到好方法,對性能有點影響。

樹data轉(zhuǎn)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)

到此這篇關(guān)于js如何構(gòu)造elementUI樹狀菜單的數(shù)據(jù)結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)js構(gòu)造elementUI樹狀菜單內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 直流大电流电源,燃料电池检漏设备-上海政飞 | 热处理炉-退火炉-回火炉设备厂家-丹阳市电炉厂有限公司 | 沙盘模型公司_沙盘模型制作公司_建筑模型公司_工业机械模型制作厂家 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 高压互感器,电流互感器,电压互感器-上海鄂互电气科技有限公司 | 真空吸污车_高压清洗车厂家-程力专用汽车股份有限公司官网 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 金属清洗剂,防锈油,切削液,磨削液-青岛朗力防锈材料有限公司 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 短信群发平台_群发短信软件_短信营销-讯鸽科技 | 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 灌木树苗-绿化苗木-常绿乔木-价格/批发/基地 - 四川成都途美园林 | 综合管廊模具_生态,阶梯护坡模具_检查井模具制造-致宏模具厂家 | 天品互联-北京APP开发公司-小程序开发制作-软件开发 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 不锈钢电动球阀_气动高压闸阀_旋塞疏水调节阀_全立阀门-来自温州工业阀门巨头企业 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 电液推杆生产厂家|电动推杆|液压推杆-扬州唯升机械有限公司 | 同学聚会纪念册制作_毕业相册制作-成都顺时针宣传画册设计公司 | 计算机毕业设计源码网| 干洗店加盟_洗衣店加盟_干洗店设备-伊蔻干洗「武汉总部」 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司| 黄石东方妇产医院_黄石妇科医院哪家好_黄石无痛人流医院 | 交流伺服电机|直流伺服|伺服驱动器|伺服电机-深圳市华科星电气有限公司 | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 飞行者联盟-飞机模拟机_无人机_低空经济_航空技术交流平台 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 上海三信|ph计|酸度计|电导率仪-艾科仪器 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 江苏大隆凯科技有限公司 |