js 遍历tree的一个例子(全遍历)
全遍历
亲测真是有效。
工作中遇到的问题应该算是比较有价值的问题。
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head> <body>
<script>
var a = [
{
"id": 1,
"name": "轻应用管理",
"childrenIds": "10,11,12,13",
"parentId": 0,
"orderNum": 1,
"url": "/lightApp/light/list",
"description": "轻应用管理",
"createTime": "2018-09-19 17:18:25",
"modifyTime": "2018-09-21 11:17:54",
"status": "ENABLE",
"mustUse": "NO",
"own": true,
"childrens": [
{
"id": 10,
"name": "轻应用列表",
"childrenIds": null,
"parentId": 1,
"orderNum": 1,
"url": "/lightApp/light/list",
"description": "轻应用列表",
"createTime": "2018-09-19 17:25:49",
"modifyTime": "2018-09-19 17:25:49",
"status": "ENABLE",
"mustUse": "NO",
"own": true,
"childrens": null
},
{
"id": 11,
"name": "轻应用信息审核",
"childrenIds": null,
"parentId": 1,
"orderNum": 2,
"url": "/lightApp/auditInfo/list",
"description": "轻应用信息审核",
"createTime": "2018-09-19 17:26:28",
"modifyTime": "2018-09-19 17:26:28",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 12,
"name": "轻应用开发审核",
"childrenIds": null,
"parentId": 1,
"orderNum": 3,
"url": "/lightApp/auditDevelop/list",
"description": "轻应用开发审核",
"createTime": "2018-09-19 17:26:52",
"modifyTime": "2018-09-19 17:26:52",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 13,
"name": "轻应用接口审核",
"childrenIds": null,
"parentId": 1,
"orderNum": 4,
"url": "/lightApp/auditInterface/list",
"description": "轻应用接口审核",
"createTime": "2018-09-19 17:27:12",
"modifyTime": "2018-09-19 17:27:12",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 2,
"name": "小程序管理",
"childrenIds": "17,18,15,14,16",
"parentId": 0,
"orderNum": 2,
"url": "/applet/builtIn/list",
"description": "小程序管理",
"createTime": "2018-09-19 17:19:36",
"modifyTime": "2018-09-19 17:19:36",
"status": "ENABLE",
"mustUse": "NO",
"own": true,
"childrens": [
{
"id": 14,
"name": "内置小程序",
"childrenIds": null,
"parentId": 2,
"orderNum": 1,
"url": "/applet/builtIn/list",
"description": "内置小程序",
"createTime": "2018-09-19 17:27:55",
"modifyTime": "2018-09-19 17:27:55",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 15,
"name": "外置小程序",
"childrenIds": null,
"parentId": 2,
"orderNum": 2,
"url": "/applet/externalSet/list",
"description": "外置小程序",
"createTime": "2018-09-19 17:28:27",
"modifyTime": "2018-09-19 17:28:27",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 16,
"name": "小程序信息审核",
"childrenIds": null,
"parentId": 2,
"orderNum": 3,
"url": "/applet/auditInfo/list",
"description": "小程序信息审核",
"createTime": "2018-09-19 17:29:17",
"modifyTime": "2018-09-19 17:29:17",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 17,
"name": "小程序开发审核",
"childrenIds": null,
"parentId": 2,
"orderNum": 4,
"url": "/applet/auditDevelop/list",
"description": "小程序开发审核",
"createTime": "2018-09-19 17:29:52",
"modifyTime": "2018-09-19 17:29:52",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 18,
"name": "小程序接口审核",
"childrenIds": null,
"parentId": 2,
"orderNum": 5,
"url": "/applet/appletInterface/list",
"description": "小程序接口审核",
"createTime": "2018-09-19 17:30:22",
"modifyTime": "2018-09-19 17:30:22",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 3,
"name": "模板管理",
"childrenIds": "19,20",
"parentId": 0,
"orderNum": 3,
"url": "/template/message/list",
"description": "模板管理",
"createTime": "2018-09-19 17:20:14",
"modifyTime": "2018-09-19 17:20:14",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": [
{
"id": 19,
"name": "消息模板管理",
"childrenIds": null,
"parentId": 3,
"orderNum": 1,
"url": "/template/message/list",
"description": "消息模板管理",
"createTime": "2018-09-19 17:31:29",
"modifyTime": "2018-09-19 17:31:29",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 20,
"name": "订单模板管理",
"childrenIds": null,
"parentId": 3,
"orderNum": 2,
"url": "/template/order/list",
"description": "订单模板管理",
"createTime": "2018-09-19 17:32:01",
"modifyTime": "2018-09-19 17:32:01",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 4,
"name": "项目管理",
"childrenIds": "21,22,23",
"parentId": 0,
"orderNum": 4,
"url": "/projects/project/list",
"description": "项目管理",
"createTime": "2018-09-19 17:20:38",
"modifyTime": "2018-09-19 17:20:38",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": [
{
"id": 21,
"name": "项目列表",
"childrenIds": null,
"parentId": 4,
"orderNum": 1,
"url": "/projects/project/list",
"description": "项目列表",
"createTime": "2018-09-19 17:32:44",
"modifyTime": "2018-09-19 17:32:44",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 22,
"name": "项目应用管理",
"childrenIds": null,
"parentId": 4,
"orderNum": 2,
"url": "/projects/application/list",
"description": "项目应用管理",
"createTime": "2018-09-19 17:33:11",
"modifyTime": "2018-09-19 17:33:11",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 23,
"name": "项目版本管理",
"childrenIds": null,
"parentId": 4,
"orderNum": 3,
"url": "/projects/versions/list",
"description": "项目版本管理",
"createTime": "2018-09-19 17:33:32",
"modifyTime": "2018-09-19 17:33:32",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 5,
"name": "信息管理",
"childrenIds": "24",
"parentId": 0,
"orderNum": 5,
"url": "/information/announcement/list",
"description": "信息管理",
"createTime": "2018-09-19 17:20:47",
"modifyTime": "2018-09-19 17:20:47",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": [
{
"id": 24,
"name": "公告列表",
"childrenIds": null,
"parentId": 5,
"orderNum": 1,
"url": "/information/announcement/list",
"description": "公告列表",
"createTime": "2018-09-19 17:34:00",
"modifyTime": "2018-09-19 17:34:00",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 6,
"name": "用户管理",
"childrenIds": "25,26,27,28",
"parentId": 0,
"orderNum": 6,
"url": "/user/registerRecord/list",
"description": "用户管理",
"createTime": "2018-09-19 17:21:02",
"modifyTime": "2018-09-19 17:21:02",
"status": "ENABLE",
"mustUse": "NO",
"own": true,
"childrens": [
{
"id": 25,
"name": "用户注册记录",
"childrenIds": null,
"parentId": 6,
"orderNum": 1,
"url": "/user/registerRecord/list",
"description": "用户注册记录",
"createTime": "2018-09-19 17:34:26",
"modifyTime": "2018-09-19 17:34:26",
"status": "ENABLE",
"mustUse": "NO",
"own": true,
"childrens": null
},
{
"id": 26,
"name": "认证申请管理",
"childrenIds": null,
"parentId": 6,
"orderNum": 2,
"url": "/user/certificationApplication/list",
"description": "认证申请管理",
"createTime": "2018-09-19 17:34:41",
"modifyTime": "2018-09-19 17:34:41",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 27,
"name": "开发者认证管理",
"childrenIds": null,
"parentId": 6,
"orderNum": 3,
"url": "/user/developerCertification/list",
"description": "开发者认证管理",
"createTime": "2018-09-19 17:35:29",
"modifyTime": "2018-09-19 17:35:29",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 28,
"name": "登录日志",
"childrenIds": null,
"parentId": 6,
"orderNum": 4,
"url": "/user/loginLog/list",
"description": "登录日志",
"createTime": "2018-09-19 17:36:03",
"modifyTime": "2018-09-19 17:36:03",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 7,
"name": "终端管理",
"childrenIds": "29",
"parentId": 0,
"orderNum": 7,
"url": "/terminal/terminal/list",
"description": "终端管理",
"createTime": "2018-09-19 17:21:18",
"modifyTime": "2018-09-19 17:21:18",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": [
{
"id": 29,
"name": "终端管理",
"childrenIds": null,
"parentId": 7,
"orderNum": 1,
"url": "/terminal/terminal/list",
"description": "终端管理",
"createTime": "2018-09-19 17:36:34",
"modifyTime": "2018-09-19 17:36:34",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 8,
"name": "基础配置",
"childrenIds": "30",
"parentId": 0,
"orderNum": 8,
"url": "/basics/appAttribute/list",
"description": "基础配置",
"createTime": "2018-09-19 17:21:34",
"modifyTime": "2018-09-19 17:21:34",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": [
{
"id": 30,
"name": "应用属性管理",
"childrenIds": null,
"parentId": 8,
"orderNum": 1,
"url": "/basics/appAttribute/list",
"description": "应用属性管理",
"createTime": "2018-09-19 17:36:57",
"modifyTime": "2018-09-19 17:36:57",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
}
]
},
{
"id": 9,
"name": "系统管理",
"childrenIds": "31,32",
"parentId": 0,
"orderNum": 9,
"url": null,
"description": "系统管理",
"createTime": "2018-09-19 17:22:41",
"modifyTime": "2018-09-19 17:22:41",
"status": "ENABLE",
"mustUse": "YES",
"own": false,
"childrens": [
{
"id": 31,
"name": "角色管理",
"childrenIds": null,
"parentId": 9,
"orderNum": 1,
"url": null,
"description": "角色管理",
"createTime": "2018-09-19 17:40:02",
"modifyTime": "2018-09-19 17:40:02",
"status": "ENABLE",
"mustUse": "NO",
"own": false,
"childrens": null
},
{
"id": 32,
"name": "权限管理",
"childrenIds": null,
"parentId": 9,
"orderNum": 2,
"url": null,
"description": "权限管理",
"createTime": "2018-09-19 17:40:42",
"modifyTime": "2018-09-19 17:40:42",
"status": "ENABLE",
"mustUse": "NO",
"own": true,
"childrens": null
}
]
}
];
var tickMenuIdFilter = (function () {
var resultArr = new Array();
var getTickMenuId = function (obj) {
if (undefined == obj || null == obj || !obj instanceof Object) {
return;
}
if (obj.own) {
resultArr.push(obj.id);
}
if (null != obj.childrens && obj.childrens instanceof Array) {
for (let child of obj.childrens) {
getTickMenuId(child);
}
} } return {
filter: function (arr) {
if (!arr instanceof Array) {
return false;
}
resultArr = new Array();
for (let rootMenu of arr) {
getTickMenuId(rootMenu);
}
return resultArr;
}
}
})();
var b = tickMenuIdFilter.filter(a);
console.log("a", a);
console.log("b", b); //结果:1,10,2,32
</script>
</body> </html>
js 遍历tree的一个例子(全遍历)的更多相关文章
- js 遍历tree的一个例子(全遍历),更复杂的功能
更复杂的功能 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- js 遍历tree的一个例子
小例子蕴含着到力量,我希望自己有改变自己生活的能力,自己有主宰自己命运的能力... 备注:这个例子有问题. <!DOCTYPE html> <html lang="en&q ...
- 【Node.js】4.从一个例子切入Node js的规范
在开始之前,需要明确的一点就是, ①Node应用是由模块组成的,每一个文件都是一个模块,有自己的作用域. ②在这个文件里定义的变量,函数,类都是私有的,对其他的文件不可见. ③在一个文件中,也就是在一 ...
- JS中for...in循环陷阱及遍历数组的方式对比
JavaScript中有很多遍历数组的方式,比较常见的是for(var i=0;i<arr.length;i++){},以及for...in...循环等,这些遍历都有各自的优缺点,下面来看看各种 ...
- HDFS 读取、写入、遍历文件夹获取文件全路径、append
版权声明:本文为博主原创文章,未经博主同意不得转载.安金龙 的博客. https://blog.csdn.net/smile0198/article/details/37573081 1.从HDFS中 ...
- 【Offer】[8] 【中序遍历的下一个结点】
题目描述 思路分析 Java代码 代码链接 题目描述 给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点? 树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父结点的指针. ...
- PAT 1043 Is It a Binary Search Tree (25分) 由前序遍历得到二叉搜索树的后序遍历
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following proper ...
- 【数据结构与算法Python版学习笔记】树——树的遍历 Tree Traversals
遍历方式 前序遍历 在前序遍历中,先访问根节点,然后递归地前序遍历左子树,最后递归地前序遍历右子树. 中序遍历 在中序遍历中,先递归地中序遍历左子树,然后访问根节点,最后递归地中序遍历右子树. 后序遍 ...
- 原生js使用forEach()与jquery使用each遍历数组,return false 的区别
原生js使用forEach()与jquery使用each()遍历数组,return false 的区别: 1.使用each()遍历数组a,如下: var a=[20,21,22,23,24]; $.e ...
随机推荐
- ASP.NET 页面生命中的关键事件的执行顺序
表 1:ASP.NET 页面生命中的关键事件 阶段 页面事件 可覆盖的方法 页面初始化 Init 加载视图状态 LoadViewState 处理回发数据 任意实现 IPostBackDat ...
- 最全 C 语言常用算法详解-排序-队列-堆栈-链表-递归-树 (面试有用)
具体 源代码 案例查看github,持续更新中............ github地址:https://github.com/Master-fd/C-Algorithm 1. 二分法查找 2. 冒泡 ...
- JMS编程模型
(1) ConnectionFactory创建Connection对象的工厂,针对两种不同的jms消息模型,分别有QueueConnectionFactory和TopicConnectionFacto ...
- Hbase优化记录
<configuration><property><name>hbase.rootdir</name><value>hdfs://gagcl ...
- dp-最小点对问题
dp-最小点对问题 //最小点对问题 //采用分治思想,先分成两个子集分别求出最短距离d //再对两个子集进行合并,在一个dx2d的矩形中,最多可能有6个点距离小于d //按y排序,当x增长时求出这6 ...
- IDEA创建Maven项目一直显示正在加载的问题
在用idea创建maven项目的时候 有时候会出现下面这种情况 出现原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需 ...
- alias这个命令还是很有用的
这是在知乎看到的一个回答. 我一开始学习linux命令的时候觉得这个alias命令很奇怪,为什么要给别人起个别名呢?有什么好处? 因为当时接触的是比较简单的命令 比如ls -al的这种短小的命令,对a ...
- centos 6.5安装 redis
版本:redis-2.8.19.tar.gz 检查下面依赖是否安装,如果没有要先安装,不然会有异常. yum install gcc-c++ yum install -y tcl. .获取安装文件 r ...
- RowGame TopCoder - 10664
传送门 分析 首先不难想到O(k)做法,即dpi表示进行了几次,但复杂度明显爆炸,所以思考更优做法.我们发现数字个数很小,仅为可怜的50,所以从这里找突破口.我们发现每次可以在一个固定区域内进行刷分活 ...
- Luogu 4137 Rmq Problem / mex
一个主席树题. 一开始想着直接动态开点硬搞就可以了,每次查询只要作一个类似于前缀和的东西看看区间有没有满,在主席树上二分就可以了. 但是这样是错的,因为一个权值会出现很多次……然后就错了. 所以我们考 ...