Loading... ``` function flatten(node) { let flattened = []; flattenChildren(node, null, flattened); return flattened; } function flattenChildren(node, parent, flattened) { let flattenedNode = { id: node.id, name: node.name, parent: parent }; flattened.push(flattenedNode); if (node.children !== undefined) { for (let child of node.children) { flattenChildren(child, node.id, flattened); } } } function unflatten(nodes) { let map = new Map(); let roots = []; for (let node of nodes) { let id = node.id; let name = node.name; let parent = node.parent; let newNode = { id: id, name: name, children: [] }; map.set(id, newNode); if (parent === null) { roots.push(newNode); } else { let parentNode = map.get(parent); parentNode.children.push(newNode); } } if (roots.length === 1) { return roots[0]; } else { return { id: null, name: null, children: roots }; } } // 测试代码 let tree = { id: 1, name: 'A', children: [ { id: 2, name: 'B', children: [ { id: 4, name: 'D' }, { id: 5, name: 'E' } ] }, { id: 3, name: 'C', children: [ { id: 6, name: 'F' } ] } ] }; let flattened = flatten(tree); console.log(flattened); /* [ { id: 1, name: 'A', parent: null }, { id: 2, name: 'B', parent: 1 }, { id: 4, name: 'D', parent: 2 }, { id: 5, name: 'E', parent: 2 }, { id: 3, name: 'C', parent: 1 }, { id: 6, name: 'F', parent: 3 } ] */ let unflattened = unflatten(flattened); console.log(JSON.stringify(unflattened, null , 2)); ``` 最后修改:2023 年 03 月 16 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏