js树状结构转换

165 阅读1分钟

11.png

22.png

44.png

33.png

接收的数据父级和子集都是平铺的,需要把子集的数据嵌套到父级内部
// id:当前数据的id,pid:当前数据的父级id
// list:数据列表,rootValue:根节点的pid
transListToTreeData(list, rootValue) {
  var arr = []
  // 遍历数组 一条一条的去找
  // 从哪里开始找 我怎么知道找到的是对的呢?
  // 树遍历一般先找到根
  // 如果pid为空 表示他是根, 他是第一级的节点
  list.forEach(item => {
    if (item.pid === rootValue) {
      // 认为找了第一级的节点  找pid等于当前item.id的节点
      const children = transListToTreeData(list, item.id) // 找到的是子节点的数组
      if (children.length) {
        // 如果长度大于0 表示我有孩子
        item.children = children
      }
      arr.push(item) // 当前节点
    }
  })
  return arr
}