当前位置: 首页 > news >正文

关于网站建设管理的通知中山网页设计

关于网站建设管理的通知,中山网页设计,妇产科网站建设,开发app学什么编程语言原文链接:如何将路径字符串数组(string[])转成树结构(treeNode[])? 需求 这里的UI使用的是Element-Plus。 将一个路径字符串数组(当然也可能是其他目标字符串数组),渲染成树。 /*source:/a/b/c/d/e/a/b/e/f/g/a/b/h/a…

原文链接:如何将路径字符串数组(string[])转成树结构(treeNode[])?

需求

这里的UI使用的是Element-Plus

将一个路径字符串数组(当然也可能是其他目标字符串数组),渲染成

/*source:/a/b/c/d/e/a/b/e/f/g/a/b/h/a/i/j/a/i/kwhat I need:a/   \b     i/|\   / \c e h j   k| |d f| |e g   */

这里模拟了待转化的字符串数组如下:

let TargetKeyLists = ["D:\\$RECYCLE.BIN\\S-1-5-21-2980625316-768050560-104202119-1001\\$I0KVI2C.css","D:\\$RECYCLE.BIN\\S-1-5-21-2980625316-768050560-104202119-1001\\$I61JY0M.php","D:\\$RECYCLE.BIN\\S-1-5-21-2980625316-768050560-104202119-1001\\$I8IC15E.html","D:\\$RECYCLE.BIN\\S-1-5-21-2980625316-768050560-104202119-1001\\$I9UTNI9.ico","D:\\Program Files\\Sandboxie","D:\\fbs\\xampp-windows-x64-8.2.0-0-VS16-installer.exe","D:\\fcstor\\.svn","D:\\xampp\\MercuryMail","D:\\xampp\\anonymous","D:\\xampp\\apache","C:\\$Recycle.Bin\\S-1-5-18","C:\\$Recycle.Bin\\S-1-5-21-2980625316-768050560-104202119-1001","C:\\$Recycle.Bin\\S-1-5-21-2980625316-768050560-104202119-500","C:\\BOOTNXT",
]

转化后的目标结构如下:

[{"label": "D:","children": [{"label": "$RECYCLE.BIN","children": [{"label": "S-1-5-21-2980625316-768050560-104202119-1001","children": [{"label": "$I0KVI2C.css","children": []},{"label": "$I61JY0M.php","children": []},{"label": "$I8IC15E.html","children": []},{"label": "$I9UTNI9.ico","children": []}]}]},{"label": "Program Files","children": [{"label": "Sandboxie","children": []}]},{"label": "fbs","children": [{"label": "xampp-windows-x64-8.2.0-0-VS16-installer.exe","children": []}]},{"label": "fcstor","children": [{"label": ".svn","children": []}]},{"label": "xampp","children": [{"label": "MercuryMail","children": []},{"label": "anonymous","children": []},{"label": "apache","children": []}]}]},{"label": "C:","children": [{"label": "$Recycle.Bin","children": [{"label": "S-1-5-18","children": []},{"label": "S-1-5-21-2980625316-768050560-104202119-1001","children": []},{"label": "S-1-5-21-2980625316-768050560-104202119-500","children": []}]},{"label": "BOOTNXT","children": []}]}
]

步骤

1.在utils文件夹下新建index.ts文件。

interface TreeNode {label: stringchildren: TreeNode[]
}// 循环构建子节点
const buildChildrenNode = (children: TreeNode[], nodeArray: string[]) => {for (let i in nodeArray) {let _i: number = Number(i)let node: TreeNode = {label: nodeArray[_i],children: []}if (_i != nodeArray.length) {node.children = []}if (children.length == 0) {children.push(node)}let isExist = falsefor (let j in children) {if (children[j].label == node.label) {if (_i != nodeArray.length - 1 && !children[j].children) {children[j].children = []}children = _i == nodeArray.length - 1 ? children : children[j].childrenisExist = truebreak}}if (!isExist) {children.push(node)if (_i != nodeArray.length - 1 && !children[children.length - 1].children) {children[children.length - 1].children = []}children = _i == nodeArray.length - 1 ? children : children[children.length - 1].children}}
}
/*** @description: string[] ->  treeNode[]* @param {string} list 资源路径数组* @param {string} clientLabel 是否需要在最外面还要套一层(exam:所属客户端)* @return { treeNode[] }*/
export const array2Tree = (list: string[], clientLabel?: string) => {let targetList: TreeNode[] = []list.map(item => {let label = itemlet nodeArray: string[] = label.split('\\').filter(str => str != '')// 递归let children: TreeNode[] = targetList// 构建根节点if (children.length == 0) {let root: TreeNode = {label: nodeArray[0],children: []}if (nodeArray.length > 1) {root.children = []}children.push(root)buildChildrenNode(children, nodeArray)} else {buildChildrenNode(children, nodeArray)}})if (!clientLabel) {return targetList} else {const newArr = [{label: clientLabel,children: targetList}]return newArr}
}

2.在目标页面中引入并调用array2Tree方法即可。

<template><el-tree :data="confirmTreeList" default-expand-all />
</template>
import { array2Tree } from '@/utils/index'let confirmTreeList: TreeNode[] = []confirmTreeList = array2Tree(TargetKeyLists)

3.效果如下:

这里说明一下,array2Tree()方法中的clientLabel参数其实可要可不要,也可继续扩展,根据自身业务而定。

比如我想最后实现的效果如下图所示:

所以在第2步中传入clientLabel即可:

confirmTreeList = array2Tree(TargetKeyLists,'test(192.168.0.213)')
http://www.yayakq.cn/news/441063/

相关文章:

  • 天津网站建设代理商企业网站做seo
  • 网上书店网站建设的说明书无锡网站设计公司
  • 室内设计师之路网站国家为何要求所有网站均须备案
  • 学做彩票网站有哪些北京市规划网站
  • 自己如何建设网站聊天室国内优秀网站赏析
  • 大连 网站维护wix怎样做网站
  • 做产品设计之前怎么查资料国外网站iis建多个网站
  • 苏州建设监督网站首页网站建设设计图片
  • 网站域名以co与com有什么不同设计制作费的税收编码
  • 衡阳网站设计wordpress产品图片怎么改
  • 适配移动网站wordpress360
  • 网站所属网络网站中qq跳转怎么做的
  • wordpress网站go.php跳转老域名怎么做新网站
  • 网站短链接怎么做崇左网页设计
  • wordpress建立企业网站小型深圳网站页面设计
  • 广州企业建站网上接单
  • 网站备案在哪儿html做网站公告
  • 高端网站设计新感觉建站wordpress修改分类标题
  • 简述网站开发的基本流程图徐州开发的网站
  • 网站建设公司报价怎么找网站建设公司
  • 织梦可以做大型网站吗ui要学哪些知识
  • 常熟做网站韩国设计公司网站
  • php网站下载文件怎么做wordpress推送到公众号
  • 建设网站推广网站建设子目录
  • 织梦网站模版怎么用网站如何做点击链接地址
  • 网站侧栏设计重庆蒲公英网站建设公司怎么样
  • 天津网站备案去哪php建站
  • 百度地图网站开发网络营销方式多元化
  • 网吧手机网站模版淮南北京网站建设
  • wordpress 拿站网站教学