扁平数据转换为树形

220 阅读1分钟

扁平数据转换为树形

像我们做树形表格时,后端返回常常是扁平数据,并不是我们想要的,这是后我们需要把数据转换陈我们需要的

let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 1},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]
function queryChilrden(arr) { //封装成函数
      let ids = []; //确保最高级的
      arr.forEach((s) => {
        ids.push(s.pid);
        s.children = [];
        arr.forEach((d) => {
          if (s.id == d.pid) {
            s.children.push(d);
          }
        });
      });
      id = Array.from(new Set(ids)).sort(function (a, b) {
        return a - b;
      });
      return arr.filter((item) => item.parentId == ids[0]);
    },
    console.log(queryChilrden(arr))

image.png

树形树形转扁平数据

//树形数据转扁平数据
const toLine = (data) => {

    return data.reduce((arr, { id, level, children = [] }) =>

      arr.concat([{ id, level }], toLine(children)), [])

    return result;

  }