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

效果好的锦州网站建设石景山做网站的公司

效果好的锦州网站建设,石景山做网站的公司,google ads,中国建设教育协会官网安全员证书原文链接:如何将路径字符串数组(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/722866/

相关文章:

  • 东莞微信网站建设推荐网站建设浏览器不兼容
  • 淘宝客做连接网站吗泰安专业的网站制作
  • 桂林北站时刻表c2c模式类型
  • wordpress 下载受限常州网站推广优化
  • 素材网站整站下载南庄营销网站建设
  • 学会网站建设的重要性网站建设备案图片
  • 龙岗商城网站建设教程个人工作室项目
  • 房地产网站加盟平面设计素材图
  • 盐城网站制作哪家好推荐佛山顺德网站建设
  • 做网站的公司那家好。wordpress怎样静态化
  • 做淘宝客可以有高佣金的网站上海网站设计制作报价
  • 信用徐州网站建设情况做电子简历的网站
  • 网站改版会影响排名吗营销网站建设的原则
  • 网站地图怎么添加网站栏目做跳转后不显示
  • 杭州网站免费制作免费搭建平台网站
  • 视频网站建设服务网站添加qq聊天
  • 盐田区住房和建设局网站做网站的公司哪个好
  • 站外推广6种方法自己做的优惠卷网站怎么进商品
  • 中国建设银行洛阳分行官网站抖音的电子商务网站建设
  • 东莞seo建站优化收费有口碑的坪山网站建设
  • 手机下载视频网站模板下载失败高端网站建设南京
  • WordPress网络管理功能南宁seo收费
  • 网站链接设计做网站什么硬盘好
  • 网站技术介绍外包公司做网站价格
  • 便宜的网站建设公司网页设计作品展示图片
  • 企业网站asp自己网站怎么做优化
  • 北京网站建设方案建设公司山东聊城建设学校网站
  • 免费个人网站怎么制作linux wordpress 下载
  • 做互助盘网站做传奇网站
  • 信誉比较好的网上做任务的网站php兼职平台