将数据转换为树形结构

数据:

let data = [
        {
        id:'1',
        parentId:'0',
        name:'1',
        type: '0',
        },
        {
          id:'2',
          parentId:'1',
          name:'2',
          type: '0',
        },
        {
          id:'3',
          parentId:'1',
          name:'3',
          type: '0',
        },
        {
          id:'4',
          parentId:'2',
          name:'4',
          type: '0',
        },
        {
          id:'5',
          parentId:'3',
          name:'4',
          type: '0',
        },
      ]

方法:

toTreeData (data) {
      var pos = {}
      var tree = []
      var i = 0
      while (data.length !== 0) {
        if (data[i].parentId === '0') {
          tree.push({
            id: data[i].id,
            label: data[i].name,
            type: data[i].type === undefined ? 0 : data[i].type.trim(),
            children: []
          })
          pos[data[i].id] = [tree.length - 1]
          data.splice(i, 1)
          i--
        } else {
          var posArr = pos[data[i].parentId]
          if (posArr !== undefined) {
            var obj = tree[posArr[0]]
            for (var j = 1; j < posArr.length; j++) {
              obj = obj.children[posArr[j]]
            }
            obj.children.push({
              id: data[i].id,
              label: data[i].name,
              type: data[i].type === undefined ? 0 : data[i].type.trim(),
              children: []
            })
            pos[data[i].id] = posArr.concat([obj.children.length - 1])
            data.splice(i, 1)
            i--
          }
        }
        i++
        if (i > data.length - 1) {
          i = 0
        }
      }
      return tree
    }

 

posted @ 2022-04-27 17:03  一如当初ゝ  阅读(275)  评论(0编辑  收藏  举报