javascript - 原生js求DOM樹的最大深度
問題描述
如何用原生js求DOM樹的最大深度?
問題解答
回答1:遞歸實現我利用了 dom 節點的 children 屬性 來遍歷和遞歸
遞歸套路是: 返回 (1 + 子節點們深度的最大值)
// map(e => e + 1)([0, 1, 2]) // => 1, 2, 3 // 類似于數組的map方法 不過這里柯里化了 var map = cb => arr => Array.prototype.map.call(arr, cb); // 取數組最大值 // max([0, 1, 2])// => 2 var max = arr => arr.reduce((acc, cur) => { if (cur >= acc) return cur; else return acc; }, arr[0]); // 遞歸函數 var nextChildren = node => { // 基準條件 if (node.children.length === 0) return 1; else {// 求子節點們的長度 并取最大值 var deeps = map(nextChildren)(node.children); return 1 + max(deeps); }}// 計算 var $body = document.getElementsByTagName(’body’)[0];var deep = nextChildren($body); console.log(deep); ScreenShot
相關文章:
1. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題2. html5 - javascript讀取自定義屬性的值,有的能夠取到,有的取不到怎么回事??3. html - Python2 BeautifulSoup 提取網頁中的表格數據及連接4. python - PyCharm里的一個文件不小心忽略了wx包5. android - VideoView與百度Map沖突6. python - (2006, ’MySQL server has gone away’)7. 小白學python的問題 關于%d和%s的區別8. python - 使用eclipse運行django代碼,修改了views.py這個文件,但是瀏覽器顯示的還是原有沒修改的結果,怎么處理?9. django - pycharm 如何配置 python3 的開發環境?10. win10 Apache24+PHP8.0,Apache不能正常加載php.ini。
