美文网首页
js 数组转树方法

js 数组转树方法

作者: 傑仔 | 来源:发表于2019-04-26 10:36 被阅读0次
    ##方法1
    function array2Tree(array) {
        const result = []
          if (!Array.isArray(array)) {
            return result
          }
          array.forEach(item => {
            delete item.children
          })
          const map = {}
          array.forEach(item => {
            map[item.id] = item
          })
          array.forEach(item => {
            const parent = map[item.parentId]
            if (parent) {
              (parent.children || (parent.children = [])).push(item)
            } else {
              result.push(item)
            }
          })
          return result
        }
    ##方法2
    /**
    *通过递归实现
    * data 数组数据
    * pid 顶级元素的parentId值
    */
    function array2Tree (data, pid) {
      let result = []
      let temp
      for (let i = 0; i < data.length; i++) {
        if (data[i].parentId === pid) {
          let obj = {id: data[i].id, name: data[i].name}
          temp = array2Tree(data, data[i].id)
          if (temp.length > 0) {
            obj.children = temp
          }
          result.push(obj)
        }
      }
      return result
    }
    
    const array = [
        {id:1, parentId: null, name: 'a'},
        {id:2, parentId: null, name: 'b'},
        {id:3, parentId: 1, name: 'c'},
        {id:4, parentId: 2, name: 'd'},
        {id:5, parentId: 1, name: 'e'},
        {id:6, parentId: 3, name: 'f'},
    ]
    arrayToTree(array)
    

    相关文章

      网友评论

          本文标题:js 数组转树方法

          本文链接:https://www.haomeiwen.com/subject/rsffnqtx.html