原文链接: https://juejin.cn/post/7020788438932684831 我自己用的时候需要
// 一维数组转换为二维数组树形结构
newTree(data,idStr,pidStr){
// idStr是每条数据的id
// pidStr是每条数据的parentId,根据这个字段判断数据之间的父子关系
let result = [];
let map = {};
if(!Array.isArray(data)){
return result;
}
//清除之前的children
data.forEach(item=>{
delete item.children;
});
//将所有数据的id作为key键,添加到map对象中
data.forEach(function(item){
// 这块是要给title设置自定义显示内容
item.title = item['id'] + ' - ' + item['name'];
item.id = item['id'];
map[item[idStr]] = item;
});
//处理数据以及层级问题
data.forEach(function(item){
const parent = map[item[pidStr]];
if(parent){
// 添加parent
if(!parent.children){
parent.children = [];
};
parent.children.push(item);
}else{
result.push(item);
}
});
return result;
},
// 获得树形结构数据
const newTreeData = this.newTree(res.data,'id','parentId');