如何解决我有一个扁平化的数组作为输入,我需要以树格式重构它
以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",{uid: "17c19db6-cde9-4581-a49e-c279faae922c",{uid: "ebb92286-58e5-49dc-a9db-30a5aec378b0",{uid: "df25c86a-b34a-42f4-8c4c-7c419dc97dc8",parent_uid: "df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},{uid: "f3bbe5bf-d56b-4e00-9991-40f27cf2b8e8",{uid: "9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f",{uid: "f800ed46-a894-418e-bb3a-e0c317a244fa",{uid: "11eb90e1-b527-4e88-be70-cad4a2a60bdd",{uid: "aaa6ff31-13d2-57d0-ef49-d8962884cedb",{uid: "81004b95-37e8-9096-918c-64fbab3b7cd7",{uid: "1cfdacf8-c7bb-481c-503a-ef88665a07c9",{uid: "13e4e12a-2e33-f69f-fe83-5fb9c2d7a869",parent_uid: "9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f"},{uid: "c480d612-0a67-105f-efc1-dd248962f1fd",{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",{"uid":"17c19db6-cde9-4581-a49e-c279faae922c",{"uid":"ebb92286-58e5-49dc-a9db-30a5aec378b0",{"uid":"df25c86a-b34a-42f4-8c4c-7c419dc97dc8","parent_uid":"df25c86a-b34a-42f4-8c4c-7c419dc97dc8"},{"uid":"f3bbe5bf-d56b-4e00-9991-40f27cf2b8e8",{"uid":"9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f",{"uid":"f800ed46-a894-418e-bb3a-e0c317a244fa",{"uid":"11eb90e1-b527-4e88-be70-cad4a2a60bdd",{"uid":"aaa6ff31-13d2-57d0-ef49-d8962884cedb",{"uid":"81004b95-37e8-9096-918c-64fbab3b7cd7",{"uid":"1cfdacf8-c7bb-481c-503a-ef88665a07c9",{"uid":"13e4e12a-2e33-f69f-fe83-5fb9c2d7a869","parent_uid":"9de2cd38-ba16-4ec0-bcd7-b2d1a4a75e3f"},{"uid":"c480d612-0a67-105f-efc1-dd248962f1fd",{"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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。