效果:
话不多说,直接上代码: 【不知道从哪搜罗来的改了改】
// 处理数据
const getData = list => {
// 删除所有children
list.forEach(item => {
delete item.children;
});
// 将数据存储为 以 id 为 KEY 的 map 索引数据列
const map = {};
list.forEach(item => {
map[item.id] = item;
});
const newList = [];
list.forEach(item => {
// 以当前遍历项的pid,去map对象中找到索引的id
const parent = map[item.parentTaskId];
// 如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到他对应的父级中
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
// 如果没有在map中找到对应的索引ID,那么直接把当前的item添加到 val结果集中,作为顶级
newList.push(item);
}
});
return newList;
};