樹結構處理最佳實踐

2021-10-05 06:43:20 字數 1253 閱讀 7966

最近實際開發過程中經常遇到需要處理樹形資料結構,每次都要寫一遍遞迴,感覺比較麻煩,各個組員的寫法也不統一,於是想自己寫一套終極版本,希望能夠兼顧複雜的業務場景和**執行效率直接上**和大家分享一下,歡迎指正。

/**

* * @param tree

* @param option

* * @param result 目標陣列,不用傳 default:

* 此方法不會修改原資料,會返回乙個新的陣列

* example:

* inittree(data, )

*/export const inittree = (tree, option, result = ) => = option;

for (let i = 0; i < tree.length; i++) ;

if (!clean) ;

} const _children = getchildren ? getchildren(tree[i]) : tree[i][childrenkey];

if (deep !== 1 && _children && _children.length) : option,

result[i].children

);} }

/*** 遍歷樹結構,fn一旦返回false就會停止遍歷

* @param tree 樹結構

* @param fn 對每個節點執行一遍fn方法

* @param childrenkey 作為children的鍵

*/export const treeforeach = (tree, fn, childrenkey = 'children') =>

};/**

* 從樹結構裡根據value找到第乙個結點

* @param value

* @param tree

*/export const findnodebyvalue = (tree, value) =>

});return result;

};/**

* 從樹結構裡根據label找到第乙個結點

* @param value

* @param tree

*/export const findnodebylabel = (tree, label) =>

});return result;

};return result;

};

最佳實踐 Flutter 最佳實踐

最佳實踐是乙個領域可以接受的專業標準,對於任何程式語言來說,提高 質量 可讀性 可維護性和健壯性都非常重要。讓我們探索一些設計和開發flutter應用程式的最佳實踐。class enum typedef和extension應採用駝峰命名uppercamelcase規則。class mainscree...

Express 專案結構最佳實踐(上)

node 和 express 沒有嚴格的檔案和目錄結構。反而你可以用你自己喜歡的方式 專案目錄結構 建立你自己的 web 應用。然而,隨著你的應用發展到一定的大小和複雜時,事情可能就會變得令人困惑了。你的 太亂了。隨著你團隊的成長,在原來 基礎上繼續工作將變得很困難。每當 合併時,你都要和衝突進行 ...

PgSQL 最佳實踐 CPU滿問題處理

前言 在資料庫運維當中,乙個dba比較常遇到又比較緊急的問題,就是突發的cpu滿 cpu利用率達到100 導致業務停滯。dba不一定非常熟悉業務實現邏輯,也不能掌控來自應用的變更或負載變化情況。所以,遇到cpu滿,往往只能從後端資料庫開始排查,追溯到具體sql,最終定位到業務層。這裡我們總結下這個問...