前端js将扁平化数据转化为=菜单树

    let menuList = [
      {
        id: 1,
        pid: -1,
        name: '江西'
      },
      {
        id: 2,
        pid: 1,
        name: '南昌'
      },
      {
        id: 3,
        pid: 1,
        name: '九江'
      },
      {
        id: 4,
        pid: -1,
        name: '广东'
      },
      {
        id: 5,
        pid: 4,
        name: '深圳'
      },
      {
        id: 6,
        pid: 5,
        name: '南山'
      }
    ]


    function getMenuList(list) {
      let menu = []
      let map = {}
      list.forEach(item => {
        item.children = []
        map[item.id] = item
        if (item.pid === -1) {
          menu.push(item)
        } else {
          map[item.pid] && map[item.pid].children.push(item)
        }
      })
      return menu
    }

    let data = getMenuList(menuList)

 

利用了 对象在内存中的保存方式是 指针引用,实现了简单的生成菜单树的算法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章