從樹形數據末節點回溯至根節點並拼接標籤
處理樹形結構數據時,常需根據末級節點信息逆向追溯至根節點,並拼接路徑上所有節點標籤。例如,給定以下樹形數據:
const treeData = [ { label: "節點1", value: "1", children: [ { label: "節點1-1", value: "1-1" }, { label: "節點1-2", value: "1-2" }, ], }, { label: "節點2", value: "2", children: [{ label: "節點2-1", value: "2-1" }], }, ];
目標是根據末級節點的value
值(例如"1-2"),拼接從該節點到根節點的所有標籤,期望結果為"節點1/節點1-2"。
直接逆向遍歷不可行,因為數據結構僅提供從根到葉子的路徑。但我們可以利用UI 庫(如tdesign 或element-ui)提供的樹形組件及其事件機制來實現。
這些庫的樹形組件通常在節點點擊時提供包含節點及其父節點信息的node
對象。我們可以利用此信息遞歸向上追溯,直到根節點。
假設點擊value
為"1-2" 的節點,tdesign 的樹形組件可能返回如下node
對象:
{ label: "節點1-2", value: "1-2", parent: { label: "節點1", value: "1", parent: null, }, }
利用此對象,我們可以遞歸訪問parent
屬性,直到parent
為null
(根節點)。在此過程中拼接每個節點的label
,即可得到完整路徑。
以下是一個基於此思路的JavaScript 函數,它接受樹形數據和目標value
值作為輸入,並返回拼接後的標籤路徑:
function getPathLabel(treeData, targetValue) { function traverse(node) { if (node.value === targetValue) { let path = []; let currentNode = node; while (currentNode) { path.unshift(currentNode.label); // 將標籤添加到數組開頭currentNode = currentNode.parent; } return path.join("/"); } if (node.children) { for (const child of node.children) { const result = traverse(child); if (result) return result; } } return null; } for (const node of treeData) { const result = traverse(node); if (result) return result; } return null; // 目標值未找到} const path = getPathLabel(treeData, "1-2"); console.log(path); // 輸出: 節點1/節點1-2
此函數通過深度優先搜索遍歷樹形數據,找到目標節點後,遞歸向上遍歷並拼接標籤。 需要注意的是,這依賴於UI 庫提供的node
對象結構,具體實現可能因庫而異。 需要根據實際的UI 庫API 進行調整。
以上是如何利用UI庫從樹形數據的末節點回溯至根節點並拼接標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

10款趣味橫生的jQuery遊戲插件,讓您的網站更具吸引力,提升用戶粘性!雖然Flash仍然是開發休閒網頁遊戲的最佳軟件,但jQuery也能創造出令人驚喜的效果,雖然無法與純動作Flash遊戲媲美,但在某些情況下,您也能在瀏覽器中獲得意想不到的樂趣。 jQuery井字棋遊戲 遊戲編程的“Hello world”,現在有了jQuery版本。 源碼 jQuery瘋狂填詞遊戲 這是一個填空遊戲,由於不知道單詞的上下文,可能會產生一些古怪的結果。 源碼 jQuery掃雷遊戲

本教程演示瞭如何使用jQuery創建迷人的視差背景效果。 我們將構建一個帶有分層圖像的標題橫幅,從而創造出令人驚嘆的視覺深度。 更新的插件可與JQuery 1.6.4及更高版本一起使用。 下載

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文演示瞭如何使用jQuery和ajax自動每5秒自動刷新DIV的內容。 該示例從RSS提要中獲取並顯示了最新的博客文章以及最後的刷新時間戳。 加載圖像是選擇

Matter.js是一個用JavaScript編寫的2D剛體物理引擎。此庫可以幫助您輕鬆地在瀏覽器中模擬2D物理。它提供了許多功能,例如創建剛體並為其分配質量、面積或密度等物理屬性的能力。您還可以模擬不同類型的碰撞和力,例如重力摩擦力。 Matter.js支持所有主流瀏覽器。此外,它也適用於移動設備,因為它可以檢測觸摸並具有響應能力。所有這些功能都使其值得您投入時間學習如何使用該引擎,因為這樣您就可以輕鬆創建基於物理的2D遊戲或模擬。在本教程中,我將介紹此庫的基礎知識,包括其安裝和用法,並提供一


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3漢化版
中文版,非常好用