樹的遍歷和篩選

来源:http://www.cnblogs.com/qeknao/archive/2017/12/01/7941967.html
-Advertisement-
Play Games

查詢樹的時候,我們需要篩除沒用的分支, 原則就是當此節點不符合條件且他沒有子節點時,刪除此節點 方法如下 1 function cal(dataC,key) { 2 var num = 0; 3 var data = $.extend(true, {}, dataC); 4 var a = data ...


查詢樹的時候,我們需要篩除沒用的分支,

原則就是當此節點不符合條件且他沒有子節點時,刪除此節點

方法如下

 1 function cal(dataC,key) {
 2                 var num = 0;
 3                 var data = $.extend(true, {}, dataC);
 4                 var a = data.Rows;
 5                 var b = $.extend(true, {}, data);
 6                 var subclause = function(a){
 7                     if (a instanceof Array){
 8                         $.each(a, function (i, e) {
 9                             if (e.children) {
10                                 if (e.children.length !=0) {
11                                     subclause(e.children);
12                                 }else if (e.name.indexOf(key) < 0) {
13                                     filter(b.Rows, e.id);
14                                 }
15                             } else if (e.name.indexOf(key) < 0) {
16                                 filter(b.Rows, e.id);
17                             }
18                         })
19                     }else if(a.name.indexOf(key) < 0){
20                         filter(b.Rows, e.id);
21                     }
22                 }
23                 function filter(arr, id) {
24                     num = 1;
25                     for (var i = 0; i < arr.length; i++) {
26                         var el = arr[i]
27                         if (el.id === id) {
28                             arr.splice(i, 1)
29                         } else {
30                             if (el.children && el.children.length) {
31                                 filter(el.children, id)
32                             }
33                         }
34                     }
35                     return arr;
36                 }
37                 subclause(a);
38                 if(num ==0){
39                     //輸出篩選完的結果
40                     manager.options.data =  b;
41                 }else {
42                     cal(b);
43                 }
44             }
篩選代碼

數據如下

1 {"Rows":[{"id":"1","parentId":"0","name":"天安雲谷設備樹2017","code":"TAYG103102","type":"devCategory","children":[{"id":"001521148699","parentId":"1","name":"1#B座PT櫃123","code":"TAYG201710100060","type":"devCategory","children":[{"id":"000676933039","parentId":"001521148699","name":"編輯後新名稱","code":"TAYG201711070181","type":"devCategory"},{"id":"001807303666","parentId":"001521148699","name":"設備類別2","code":"TAYG201711070182","type":"devCategory"},{"id":"7j1cOVdHJNRtWu7S","parentId":"001521148699","name":"新設備1","code":"SBBM201711070454","type":"device"},{"id":"9D80gsD1ibGIdi7s","parentId":"001521148699","name":"設備信息1","code":"SBBM201711070466","type":"device"},{"id":"ae6MsPVTnE3yQRI8","parentId":"001521148699","name":"新設備1","code":"SBBM201711070458","type":"device"},{"id":"gEYWc5n12zIkZSf2","parentId":"001521148699","name":"設備信息1","code":"SBBM201711070460","type":"device"},{"id":"hwncx1NZlIzd149i","parentId":"001521148699","name":"設備信息1","code":"SBBM201711070467","type":"device"},{"id":"jdaAm1BIfgmkf8pK","parentId":"001521148699","name":"設備信息1","code":"SBBM201711070463","type":"device"},{"id":"NndrcH26kRhFrYpM","parentId":"001521148699","name":"設備信息1","code":"SBBM201711070461","type":"device"},{"id":"P2YVKOd5RUhsFbi3","parentId":"001521148699","name":"設備信息1","code":"SBBM201711070462","type":"device"},{"id":"ZF0Umr9kNyGYbA5g","parentId":"001521148699","name":"設備信息1","code":"SBBM201711070464","type":"device"}]},{"id":"2","parentId":"1","name":"1#B座PT櫃123","code":"YGYQ","type":"devCategory","children":[{"id":"000217285013","parentId":"2","name":"導入1","code":"TAYG04020208","type":"devCategory"},{"id":"002052056212","parentId":"2","name":"北區控制箱","code":"TAYG04020208","type":"devCategory"},{"id":"73","parentId":"2","name":"電梯系統","code":"TAYG02","type":"devCategory","children":[{"id":"74","parentId":"73","name":"客梯","code":"TAYG0201","type":"devCategory","children":[{"id":"80","parentId":"74","name":"3#C座客梯","code":"TAYG020106","type":"devCategory","children":[{"id":"001216893841","parentId":"80","name":"20170908","code":"20170908","type":"devCategory"}]},{"id":"78","parentId":"74","name":"3#A座客梯","code":"TAYG020104","type":"devCategory"},{"id":"76","parentId":"74","name":"1#B座客梯","code":"TAYG020102","type":"devCategory"},{"id":"000168338644","parentId":"74","name":"2#40客梯","code":"TAYG020140","type":"devCategory"},{"id":"001779705439","parentId":"74","name":"產招客梯","code":"TAYG201709280048","type":"devCategory"},{"id":"75","parentId":"74","name":"1#A座客梯","code":"TAYG020101","type":"devCategory"},{"id":"77","parentId":"74","name":"2#客梯","code":"TAYG020103","type":"devCategory"},{"id":"79","parentId":"74","name":"3#B座客梯","code":"TAYG020105","type":"devCategory"},{"id":"81","parentId":"74","name":"3#D座客梯","code":"TAYG020107","type":"devCategory"}]}]},{"id":"3","parentId":"2","name":"強電系統","code":"TAYG01","type":"devCategory","children":[{"id":"4","parentId":"3","name":"高壓","code":"TAYG0101","type":"devCategory","children":[{"id":"15","parentId":"4","name":"母聯櫃","code":"TAYG010104","type":"devCategory","children":[{"id":"16","parentId":"15","name":"2#母聯櫃","code":"TAYG01010401","type":"devCategory"}]},{"id":"12","parentId":"4","name":"PT櫃","code":"TAYG010103","type":"devCategory","children":[{"id":"13","parentId":"12","name":"1#B座PT櫃","code":"TAYG01010301","type":"devCategory"},{"id":"14","parentId":"12","name":"3#A座PT櫃","code":"TAYG01010302","type":"devCategory"}]},{"id":"24","parentId":"4","name":"出線櫃","code":"TAYG010107","type":"devCategory","children":[{"id":"25","parentId":"24","name":"1#B座出線櫃","code":"TAYG01010701","type":"devCategory"},{"id":"27","parentId":"24","name":"3#A座出線櫃","code":"TAYG01010703","type":"devCategory"},{"id":"26","parentId":"24","name":"2#出線櫃","code":"TAYG01010702","type":"devCategory"}]},{"id":"28","parentId":"4","name":"隔離櫃","code":"TAYG010108","type":"devCategory","children":[{"id":"29","parentId":"28","name":"2#隔離櫃","code":"TAYG01010801","type":"devCategory"},{"id":"002013743457","parentId":"28","name":"過濾器","code":"TAYG201709220039","type":"devCategory"}]},{"id":"9","parentId":"4","name":"計量櫃","code":"TAYG010102","type":"devCategory","children":[{"id":"10","parentId":"9","name":"1#B座計量櫃","code":"TAYG01010201","type":"devCategory"},{"id":"11","parentId":"9","name":"3#A座計量櫃","code":"TAYG01010202","type":"devCategory"}]},{"id":"5","parentId":"4","name":"進線櫃","code":"TAYG010101","type":"devCategory","children":[{"id":"6","parentId":"5","name":"1#B座進線櫃","code":"TAYG01010101","type":"devCategory"}]},{"id":"001016964342","parentId":"4","name":"高壓高壓","code":"TAYG201709120010","type":"devCategory"},{"id":"17","parentId":"4","name":"環網櫃","code":"TAYG010105","type":"devCategory","children":[{"id":"19","parentId":"17","name":"3#D座環網櫃","code":"TAYG01010502","type":"devCategory"},{"id":"18","parentId":"17","name":"3#C座環網櫃","code":"TAYG01010501","type":"devCategory"}]},{"id":"20","parentId":"4","name":"直流屏","code":"TAYG010106","type":"devCategory","children":[{"id":"22","parentId":"20","name":"2#直流屏","code":"TAYG01010602","type":"devCategory"},{"id":"21","parentId":"20","name":"1#B座直流屏","code":"TAYG01010601","type":"devCategory"},{"id":"23","parentId":"20","name":"3#A座直流屏","code":"TAYG01010603","type":"devCategory"}]}]},{"id":"30","parentId":"3","name":"低壓","code":"TAYG0102","type":"devCategory","children":[{"id":"55","parentId":"30","name":"低壓聯絡櫃","code":"TAYG010205","type":"devCategory","children":[{"id":"58","parentId":"55","name":"3#C座聯絡櫃","code":"TAYG01020503","type":"devCategory"},{"id":"59","parentId":"55","name":"3#D座聯絡櫃","code":"TAYG01020504","type":"devCategory"},{"id":"56","parentId":"55","name":"1#B座聯絡櫃","code":"TAYG01020501","type":"devCategory"},{"id":"57","parentId":"55","name":"3#A座聯絡櫃","code":"TAYG01020502","type":"devCategory"}]},{"id":"60","parentId":"30","name":"雙電源自動切換","code":"TAYG010206","type":"devCategory","children":[{"id":"63","parentId":"60","name":"3#A座雙電源自動切換","code":"TAYG01020603","type":"devCategory"},{"id":"62","parentId":"60","name":"2#雙電源自動切換","code":"TAYG01020602","type":"devCategory"},{"id":"64","parentId":"60","name":"3#C座雙電源自動切換","code":"TAYG01020604","type":"devCategory"},{"id":"61","parentId":"60","name":"1#B座雙電源自動切換","code":"TAYG01020601","type":"devCategory"}]},{"id":"67","parentId":"30","name":"發電機本體","code":"TAYG010209","type":"devCategory","children":[{"id":"71","parentId":"67","name":"3#D發座電機組","code":"TAYG01020904","type":"devCategory"},{"id":"70","parentId":"67","name":"3#A座發電機組","code":"TAYG01020903","type":"devCategory"},{"id":"68","parentId":"67","name":"1#B座發電機組","code":"TAYG01020901","type":"devCategory"},{"id":"69","parentId":"67","name":"2#發電機組","code":"TAYG01020902","type":"devCategory"}]},{"id":"72","parentId":"30","name":"UPS本體","code":"TAYG010210","type":"devCategory"},{"id":"31","parentId":"30","name":"變壓器","code":"TAYG010201","type":"devCategory","children":[{"id":"33","parentId":"31","name":"2#變壓器","code":"TAYG01020102","type":"devCategory"},{"id":"34","parentId":"31","name":"3#A座變壓器","code":"TAYG01020103","type":"devCategory"},{"id":"35","parentId":"31","name":"3#C座變壓器","code":"TAYG01020104","type":"devCategory"},{"id":"36","parentId":"31","name":"3#D座變壓器","code":"TAYG01020105","type":"devCategory"},{"id":"32","parentId":"31","name":"1#B座變壓器","code":"TAYG01020101","type":"devCategory"}]},{"id":"43","parentId":"30","name":"低壓出線櫃","code":"TAYG010203","type":"devCategory","children":[{"id":"46","parentId":"43","name":"3#A座低壓出線櫃","code":"TAYG01020303","type":"devCategory"},{"id":"44","parentId":"43","name":"1#B座低壓出線櫃","code":"TAYG01020301","type":"devCategory"},{"id":"45","parentId":"43","name":"2#低壓出線櫃","code":"TAYG01020302","type":"devCategory"},{"id":"47","parentId":"43","name":"3#C座低壓出線櫃","code":"TAYG01020304","type":"devCategory"},{"id":"48","parentId":"43","name":"3#D座低壓出線櫃","code":"TAYG01020305","type":"devCategory"}]},{"id":"66","parentId":"30","name":"照明配電櫃","code":"TAYG010208","type":"devCategory"},{"id":"49","parentId":"30","name":"電容補償櫃","code":"TAYG010204","type":"devCategory","children":[{"id":"50","parentId":"49","name":"1#B座電容補償櫃","code":"TAYG01020401","type":"devCategory"},{"id":"52","parentId":"49","name":"3#A座電容補償櫃","code":"TAYG01020403","type":"devCategory"},{"id":"51","parentId":"49","name":"2#電容補償櫃","code":"TAYG01020402","type":"devCategory"},{"id":"53","parentId":"49","name":"3#C座電容補償櫃","code":"TAYG01020404","type":"devCategory"},{"id":"54","parentId":"49","name":"3#D座電容補償櫃","code":"TAYG01020405","type":"devCategory"}]},{"id":"37","parentId":"30","name":"低壓進線櫃","code":"TAYG010202","type":"devCategory","children":[{"id":"38","parentId":"37","name":"1#B座低壓進線櫃","code":"TAYG01020201","type":"devCategory"},{"id":"40","parentId":"37","name":"3#A座低壓進線櫃","code":"TAYG01020203","type":"devCategory"},{"id":"41","parentId":"37","name":"3#C座低壓進線櫃","code":"TAYG01020204","type":"devCategory"},{"id":"42","parentId":"37","name":"3#D座低壓進線櫃","code":"TAYG01020205","type":"devCategory"},{"id":"39","parentId":"37","name":"2#低壓進線櫃","code":"TAYG01020202","type":"devCategory"}]},{"id":"65","parentId":"30","name":"動力配電櫃","code":"TAYG010207","type":"devCategory"}]}]}]},{"id":"001100150274","parentId":"1","name":"1#B座PT櫃123","code":"TAYG10","type":"devCategory"}]}]}
View Code

效果圖

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很多人對正則表達式的印象都是用來做表單驗證的,這其實是不大準確的。正則表達式目前在很多軟體中都得到了廣泛的應用,包括Linux,Unix等操作系統,VBScript,Java,PHP等開發環境中,以及很多應用軟體都能應用到正則表達式。 ...
  • cu主題是由瘋狂的大叔設計,界面簡潔大方是它最大的特點之一。 手殘君也比較喜愛這款主題,在使用的過程中,根據手殘君的個人習慣,對其進行了優化。 標題居中顯示 增加標題div背景色 標題div平滑優化 相關代碼: tags頁面增加標簽彙總(隨著標簽越來越多,原有的tags頁面滿足不了數據索引的需求) ...
  • 公司突然組織需要重新搭建一個基於 的論壇系統,前端採用 ,上網找了一些腳手架,或多或少不能滿足自己的需求,最終在基於 的`react`腳手架 "generator react webpack" 上搭建改造,這裡作為記錄。 代碼在這裡: "github" 另外推薦地址: "react starter ...
  • 圖片隱寫術就是利用圖片來隱藏某些數據,讓人一眼看去以為是很普通很正常的圖片,但其實裡面隱藏著某些“機密”數據。我們可以用它來保護某些機密圖片或者隱藏特殊的文字信息。 ...
  • Angular2官網通過http請求模擬API 來請求hero 數據,感覺有點繁瑣,很讓人理解不了,我們不採用它的辦法,直接展示怎麼使用http請求來獲取我們的數據 ,直截了當。 第一、準備工作,創建一個WebApi 創建一個webapi(這裡我使用MVC4 WebApi ,你可以選擇其他途徑提供j ...
  • 具體步驟請參考:http://blog.csdn.net/a727911438/article/details/70834467 打包時出現了不少問題,逐一記錄下來以供其他人參考。 package.json文件內容 main.js文件內容 安裝好打包神器後,在執行 electron-packager ...
  • 當已知要載入圖片時方能使用,提升網頁的流暢性。 ...
  • Vue-Access-Control是一套基於Vue/Vue-Router/axios 實現的前端用戶許可權控制解決方案,通過對路由、視圖、請求三個層面的控制,使開發者可以實現任意顆粒度的用戶許可權控制。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...