1. 程式人生 > >js 遍歷tree的一個例子(全遍歷)

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>