原文链接: https://juejin.cn/post/7020788438932684831 我自己用的时候需要
1// 一维数组转换为二维数组树形结构 2 newTree(data,idStr,pidStr){ 3 // idStr是每条数据的id 4 // pidStr是每条数据的parentId,根据这个字段判断数据之间的父子关系 5 let result = []; 6 let map = {}; 7 if(!Array.isArray(data)){ 8 return result; 9 } 10 //清除之前的children 11 data.forEach(item=>{ 12 delete item.children; 13 }); 14 //将所有数据的id作为key键,添加到map对象中 15 data.forEach(function(item){ 16 // 这块是要给title设置自定义显示内容 17 item.title = item['id'] + ' - ' + item['name']; 18 item.id = item['id']; 19 map[item[idStr]] = item; 20 }); 21 //处理数据以及层级问题 22 data.forEach(function(item){ 23 const parent = map[item[pidStr]]; 24 if(parent){ 25 // 添加parent 26 if(!parent.children){ 27 parent.children = []; 28 }; 29 parent.children.push(item); 30 }else{ 31 result.push(item); 32 } 33 }); 34 return result; 35 }, 36// 获得树形结构数据 37const newTreeData = this.newTree(res.data,'id','parentId');
