平面数据转换为树形结构

const data = [{
  id: 1,
  parentid: 0,
  text: '集团'
}, {
  id: 2,
  parentid: 0,
  text: '集团2'
}, {
  id: 3,
  parentid: 1,
  text: '集团1-公司1'
}, {
  id: 4,
  parentid: 1,
  text: '集团1-公司2'
}, {
  id: 5,
  parentid: 4,
  text: '集团1-公司2-部门1'
}, {
  id: 6,
  parentid: 4,
  text: '集团1-公司2-部门2'
}]

const generateTree = data => {
  if (!data || data.length === 0) return []
  const obj = {} //根据parentid 来保存他的所有下级
  data.forEach(item => {
    const { parentid } = item
    if (!obj[parentid]) { obj[parentid] = [] }
    obj[parentid].push(item)
  })
  data.forEach(item => {
    item.children = obj[item.id] || []
  })
  const result = data.filter(item => item.parentid === 0)
  console.log(result)
  return result
}
generateTree(data)
原文地址:https://www.cnblogs.com/pengyinghao/p/14154082.html