const obj = { id: 1, name: "部门1", pid: 0, children: [ { id: 2, name: "部门2", pid: 1, children: [], }, { id: 6, name: "部门6", pid: 1, children: [], }, { id: 3, name: "部门3", pid: 1, children: [ { id: 4, name: "部门4", pid: 3, children: [ { id: 5, name: "部门5", pid: 4, children: [], }, ], }, ], }, ], };
时间: 2024-02-10 13:13:54 浏览: 100
obj2gltf:将OBJ资产转换为glTF
这是一个部门组织架构的树形结构,其中每个部门都有一个唯一的id,一个名称name,一个父部门的id(pid),和一个子部门数组(children)。
可以将这个树形结构转换为一个扁平化结构的部门列表,其中每个部门都是一个对象,包含id、name、pid等属性。可以使用递归算法来实现这个转换。
下面是一个示例代码实现:
```
function flattenDepartments(departments, parentId) {
var result = [];
for(var i = 0; i < departments.length; i++) {
var department = departments[i];
department.pid = parentId;
result.push(department);
if(department.children.length > 0) {
result = result.concat(flattenDepartments(department.children, department.id));
delete department.children;
}
}
return result;
}
var flatDepartments = flattenDepartments([obj], 0);
console.log(flatDepartments);
```
这个函数将树形结构的部门组织架构转换为了一个扁平化的部门列表,其中每个部门都是一个对象,包含id、name、pid等属性。
阅读全文