当遇到了好多扁平数据我们都无从下手?不知道如何处理?
家人们 无脑调用这个函数就好了
接口请求回来以后
调用这个函数传入实参就可以用啦~
// 树形菜单函数
function GetTreeData(data) {
let TreeData = [];
let map = new Map(); //存在id,对应所在的内存地址
// console.log(map);
let outputObj, pid;
for (let i = 0; i < data.length; i++) {
pid = data[i].pid;
if (map.has(pid)) {
//存在,将些信息,加入到对应id=pid的对象上的children
if (!map.get(pid).children) map.get(pid).children = [];
let obj = new Object(data[i]);
map.get(pid).children.push(obj);
map.set(data[i].id, obj);
// console.log(map);
} else if (!map.has(pid) && pid == 0) {
//这里处理pid不存在,且pid 为0的处理,pid不存在,且不为0的,程序不考虑这种情况
outputObj = new Object(data[i]);
TreeData.push(outputObj);
map.set(data[i].id, outputObj);
// console.log(map);
}
}
return TreeData;
}
输出效果: