toTree(data) {
//创建一个空数组
const result = [];
// 判断传递的是不是一个数组 不是则返回空数组
if (!Array.isArray(data)) {
return result;
}
// children为空的时候删除
data.forEach(item => {
delete item.children;
});
// 创建一个对象
const map = {};
data.forEach(item => {
//将数组改为键值对的形式 他的id当他的键
map[item.id] = item;
});
data.forEach(item => {
// pid是id的二级菜单 pid和id是对应的
const parent = map[item.pid];
// 如果获取pid的时候能获取到,就证明是有二级菜单的,将二级菜单的数据添加上去
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
}