封装转换函数
function flattenTree(tree) {
let result = [];
function traverse(node,id, parentId) {
const obj = { ...node, id, parentId }; // 分配唯一 ID 和 parentId
delete obj.children; // 删除 children 属性
result.push(obj); // 将当前节点添加到结果数组
// 如果有子节点,递归遍历
if (node.children && node.children.length > 0) {
node.children.forEach(child => {
traverse(child, child.id,obj.id); // 使用当前节点的 ID 作为子节点的 parentId
});
}
}
// 遍历每个根节点
tree.forEach(node => {
traverse(node, null); // 根节点的 parentId 为 null
});
return result;
}
使用调用传入树形结构即可
flattenTree(tree)