Open Rain120 opened 2 years ago
function transform(values) {
const res = [];
const arr = [];
const pathPool = [];
for (const key in values) {
const {username, department} = values[key];
const paths = department.split('-');
for (let i = 0; i < paths.length; i++) {
const path = paths[i];
const curPath = paths.slice(0, i + 1).join('-');
if (pathPool.includes(curPath)) {
continue;
}
pathPool.push(curPath);
obj.name = i === 0 ? path : username;
obj.path = curPath;
obj.parent = i < 1 ? '' : paths.slice(0, i).join('-');
obj.children = [];
arr.push(obj);
}
}
const map = {};
for (let item of arr) {
map[item.path] = item;
}
for (let item of arr) {
if (!item.parent) {
res.push(item);
continue;
} else {
const parent = map[item.parent];
if (parent) {
parent.children.push(item);
}
}
}
return res;
}
题目