js array to tree

603 阅读1分钟
function aTt(arr) {
  let res = []
  let itemMap = {}
  for (const item of arr) {
    const { id, pid } = item
    itemMap[id] || (itemMap[id] = { children : [] })
    itemMap[id] = {
      ...item,
      children: itemMap[id]['children']
    }
    const treeItem = itemMap[id]
    if (pid === 0) {
      res.push(treeItem)
    } else {
      itemMap[pid] || ( itemMap[pid] = { children: [] })
      itemMap[pid]['children'].push(treeItem)
    }
  }
  return res
}