一、场景
描述:如下图图一,后端返回的数据是这个样子的,但业务我们将这个数据格式转换为树形结构(参考ant-design-vue 树选择组件),如图二
二、实现
function createTree(tree, parentId = 0) {
let data = tree.filter(v => v.parentId == parentId)
if (!data.length) {
console.log(data, 'data');
return []
}
let filterTree = []
for (let i = 0; i < data.length; i++) {
let item = data[i]
let objTree = {
title: item.name,
value: item.deptId,
key: item.deptId,
parentId: item.parentId,
level: item.level,
over: item.level >= 3 ? true : false,
label: item.name,
children: []
}
objTree.children = createTree(tree, parentId = item.deptId)
if (!objTree.children || !objTree.children.length) {
delete objTree.children
}
filterTree.push(objTree)
}
return filterTree
}