- 数据必须包含
id
和parentId
,代码示例的数据id
为functionId
,可以根据需要替换数据id
和parentId
的命名。 functionSort
数据定义的排序字段,分别对子节点、根节点排序,不需要可以去掉sort相关代码
const arrayToTreeLoop = (nodes) => {
const map = {}
const tree = []
for (const node of nodes) {
map[node.functionId] = { ...node, children: [] }
}
for (const node of Object.values(map)) {
if (node.parentId === null) {
tree.push(node)
} else {
map[node.parentId].children.push(node)
map[node.parentId].children.sort(function(a, b) {
return a.functionSort - b.functionSort
})
}
}
tree.sort(function(a, b) {
return a.functionSort - b.functionSort;
})
return tree
}