让前端飞前端开发

关系数据改为嵌套数据

2019-03-12  本文已影响3人  _月光临海

需求

依据 idparentId 构造父子集关系,将子数据放到父数据的 child 字段中


思路


数据源

let data: [
    { id: 1, text: "1", parentId: 0 },
    { id: 2, text: "2", parentId: 0 },
    { id: 3, text: "1-3", parentId: 1 },
    { id: 4, text: "1-3-4", parentId: 3 },
    { id: 5, text: "2-5", parentId: 2 },
    { id: 6, text: "1-3-6", parentId: 3 }
]

方法:

function flat2Tree(
  data,
  id = "id",
  pId = "parentId",
  childKey = "child",
  condition = 0
) {
  data.map(it => {
    if (it[pId] !== condition) {
      data.map(obj => {
        if (obj[id] === it[pId]) {
          if (!obj[childKey]) obj[childKey] = [];
          obj[childKey].push(it);
        }
      });
    }
  });
  return data.filter(it => it[pId] === 0);
}

使用

let newData = flat2Tree(data)

结果

上一篇 下一篇

猜你喜欢

热点阅读