js生成树结构

let arr = [
      {
        id: 1,
        name: '一级1',
        pid: 0,
      },
      {
        id: 2,
        name: '一级2',
        pid: 0,
      },
      {
        id: 3,
        name: '一级3',
        pid: 0,
      },
      {
        id: 4,
        name: '二级11',
        pid: 1,
      },
      {
        id: 5,
        name: '二级12',
        pid: 1,
      },
      {
        id: 6,
        name: '二级21',
        pid: 2,
      },
      {
        id: 7,
        name: '二级22',
        pid: 2,
      },
      {
        id: 8,
        name: '三级11',
        pid: 4,
      },
    ]
    function getTree(data) {
      let parents = data.filter((v) => v.pid == 0)
      children = data.filter((v) => v.pid !== 0)
      dataToTree(parents, children)
      function dataToTree(parents, children) {
        parents.map((v) => {
          children.map((c, i) => {
            if (c.pid === v.id) {
              let _c = JSON.parse(JSON.stringify(children))
              _c.splice(i, 1)
              dataToTree([c], _c)

              if (v.children) {
                v.children.push(c)
              } else {
                v.children = [c]
              }
            }
          })
        })
      }
      return parents
    }

版权声明:本文为m0_53264079原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。