簡體   English   中英

我有一個扁平數組作為輸入,我需要以樹格式重建它

[英]I have a flattened array as input, I need to reconstruct it in a tree format

此外,以null作為parent_uid的一個節點是最頂層的節點。 輸入 -:

[
{uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f", parent_uid: null},
{uid: "c64eb64e-1291-4833-b646-947f1a64a1cf", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "93976670-6272-4cca-ac18-73bb3345d95c", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "17c19db6-cde9-4581-a49e-c279faae922c", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "ebb92286-58e5-49dc-a9db-30a5aec378b0", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "df25c86a-b34a-42f4-8c4c-7c419dc97dc8", parent_uid: "df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},
{uid: "f3bbe5bf-d56b-4e00-9991-40f27cf2b8e8", parent_uid: "df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},
{uid: "9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f", parent_uid: "df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},
{uid: "f800ed46-a894-418e-bb3a-e0c317a244fa", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "11eb90e1-b527-4e88-be70-cad4a2a60bdd", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "aaa6ff31-13d2-57d0-ef49-d8962884cedb", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "81004b95-37e8-9096-918c-64fbab3b7cd7", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "1cfdacf8-c7bb-481c-503a-ef88665a07c9", parent_uid: "d86161ab-1838-4cd3-afc2-20a32c08e88f"},
{uid: "13e4e12a-2e33-f69f-fe83-5fb9c2d7a869", parent_uid: "9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f"},
{uid: "c480d612-0a67-105f-efc1-dd248962f1fd", parent_uid: "9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f"},
{uid: "44a7b3c8-5672-fac1-1b98-1f173cab2737", parent_uid: "13e4e12a-2e33-f69f-fe83-5fb9c2d7a869"}
]

您可以使用reduce方法通過遞歸方法執行此操作並傳遞uid ,然后在嵌套調用中使用parent_uid檢查它。

 const data = [{"uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f","parent_uid":null},{"uid":"c64eb64e-1291-4833-b646-947f1a64a1cf","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"93976670-6272-4cca-ac18-73bb3345d95c","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"17c19db6-cde9-4581-a49e-c279faae922c","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"ebb92286-58e5-49dc-a9db-30a5aec378b0","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"df25c86a-b34a-42f4-8c4c-7c419dc97dc8","parent_uid":"df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},{"uid":"f3bbe5bf-d56b-4e00-9991-40f27cf2b8e8","parent_uid":"df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},{"uid":"9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f","parent_uid":"df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},{"uid":"f800ed46-a894-418e-bb3a-e0c317a244fa","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"11eb90e1-b527-4e88-be70-cad4a2a60bdd","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"aaa6ff31-13d2-57d0-ef49-d8962884cedb","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"81004b95-37e8-9096-918c-64fbab3b7cd7","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"1cfdacf8-c7bb-481c-503a-ef88665a07c9","parent_uid":"d86161ab-1838-4cd3-afc2-20a32c08e88f"},{"uid":"13e4e12a-2e33-f69f-fe83-5fb9c2d7a869","parent_uid":"9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f"},{"uid":"c480d612-0a67-105f-efc1-dd248962f1fd","parent_uid":"9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f"},{"uid":"44a7b3c8-5672-fac1-1b98-1f173cab2737","parent_uid":"13e4e12a-2e33-f69f-fe83-5fb9c2d7a869"}] function toTree(data, pid = null) { return data.reduce((r, e) => { if (pid === e.parent_uid) { const obj = {...e } const children = toTree(data, e.uid); if (children.length) obj.children = children; r.push(obj) } return r; }, []) } const result = toTree(data); console.log(result)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM