/**
* 将扁平化数据转换成树结构数据
* @param {Array} list 扁平数据
*/
function dealTreeData(list) {
// 创建一个用ID作Key的对象
let map = {}
// 创建一个空数组,用来接收传入的数组
let listData = []
// 返回的数组
let resultList = []
// 循环遍历出map对象和数组格式
list.forEach(item => {
// 给map,listData赋值
map[item.id] = item;
listData.push(item);
});
// 循环数组
listData.forEach(item => {
// 根据父级的ID,找到对应的对象
let even = map[item.pId];
// 判断对象是否存在,存在的话,进行深层次的判断
if (even) {
// 判断父级是否存在子级,存在进行传值
if (even.children) {
even.children.push(item);
} else {
// 不存在,创建子级,进行传值
even.children = [];
even.children.push(item);
}
} else {
// 对象不存在,做为初始的值,传入空数组
resultList.push(item);
}
});
return resultList
}