Skip to content

列表结构(一维数组)转树结构

  • 需求

    普通列表结构数组转成树结构数组

  • 代码

    interface ITExtends {
      children?: []
      level?
    }
    
    /**
     * 列表结构(一维数组)转树结构
    * @param data
    * @param pid
    * @param id
    * @returns
    */
    export const list2Tree = <T extends ITExtends>(
      data: Array<T>,
      pid = 'parentId',
      id = 'id'
    ): Array<T> => {
      const info = data.reduce((map, node) => ((map[node[id]] = node), (node.children = []), map), {})
      return data.filter((node) => {
        info[node[pid]] && info[node[pid]].children.push(node)
        return !node[pid]
      })
    }