Vue 扁平化数据转tree封装过滤函数 element2

 

 

第一种情况:后台返回的ztree数据格式 前端不需要做处理 如下:

 

 

 

 

 第二种情况:后台比较懒没有转化  那么前端需要扁平化数据转tree

后台返回数据格式如下:

 

 

 

前端调用封装好的过滤函数:

 

 

/*
  格式化树形
  datas需要过滤的数据
  最外层节点的pid
  defaultProp为树形数据的默认配置
  */
const getListData = function getListData(datas, bigPid, defaultProp) {
  if (!defaultProp) {
    defaultProp = {
// 注意后台返回的字段名字 label: "title", id: "id", pid: "pid", }; } let dataArray = []; datas.forEach(function (data) { let pid = data[defaultProp.pid]; if (pid == bigPid) { let objTemp = {}; for (var pl in data) { //数组对象遍历 objTemp[pl] = data[pl]; } dataArray.push(objTemp); } }); return data2treeDG(datas, dataArray, defaultProp); }; function data2treeDG(datas, dataArray, defaultProp) { for (let j = 0; j
< dataArray.length; j++) { let dataArrayIndex = dataArray[j]; let childrenArray = []; let Id = dataArrayIndex[defaultProp.id]; for (let i = 0; i < datas.length; i++) { let data = datas[i]; let pid = data[defaultProp.pid]; if (pid == Id) { //判断是否为儿子节点 let objTemp = {}; for (var pl in data) { //数组对象遍历 objTemp[pl] = data[pl]; } childrenArray.push(objTemp); } } dataArrayIndex.children = childrenArray; if (childrenArray.length > 0) { //有儿子节点则递归 data2treeDG(datas, childrenArray, defaultProp); } } return dataArray; } export default getListData;

 

 

DOM (代码就不粘了 灵活运用)

 

 

 

 

 

 

 

 

 

 

作者:微微一笑绝绝子
出处:https://www.cnblogs.com/wwyxjjz/p/15137293.html
本博客文章均为作者原创,转载请注明作者和原文链接。

 

posted @ 2021-08-13 14:34  微微一笑绝绝子  阅读(140)  评论(0编辑  收藏  举报