遞歸常用方法

1、后端一次性返回所有樹(shù)節(jié)點(diǎn)的數(shù)據(jù),如何進(jìn)行優(yōu)雅的渲染呢?

例如后端返回的是這樣的數(shù)據(jù):
image.png

這個(gè)時(shí)候我們就要根據(jù)pid === id來(lái)進(jìn)行樹(shù)結(jié)構(gòu)的分類

    resetTree (val) {
      let list = val || []
      let result = []
      let hashTable = {}
      for (let i = 0; i < list.length; i++) {
        let label = list[i]
        let id = parseInt(label.id)
        let parentId = parseInt(label.pId)

        hashTable[id] = label
        label.children = []

        if (parentId === 0) {
          result.push(label)
        } else {
          let parent = hashTable[parentId]
          if (!parent) {
            console.log('這個(gè)label找不到父級(jí)', label.id)
          }
          parent && parent.children.push(label)
        }
        this.setTree(result)
      }
    }
  /*
    通過(guò)這個(gè)方法就可以把數(shù)據(jù)轉(zhuǎn)變成正常的樹(shù)形的結(jié)構(gòu)數(shù)據(jù)
   這個(gè)時(shí)候還需對(duì)字段進(jìn)行替換就需用到遞歸替換
 */
    setTree (val) {
      let item = []
      val.map((list, i) => {
        let newData = {}
        newData.label = list.resName
        newData.id = list.resId
        newData.pId = list.parentResId
        newData.is_show_add = false
        newData.is_show_del = false
        newData.children = list.subResList ? this.setTree(list.subResList) : []
        item.push(newData)
      })
      this.treeList = item
      return item
    }
   通過(guò)這個(gè)方法就可以把字段替換成 ui框架對(duì)應(yīng)的渲染字段
   這個(gè)也是一個(gè)常見(jiàn)的遞歸方法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介瀏覽器可以被認(rèn)為是使用最廣泛的軟件,本文將介紹瀏覽器的工 作原理,我們將看到,從你在地址欄輸入google.c...
    聽(tīng)風(fēng)閣閱讀 3,393評(píng)論 0 7
  • 前端必讀:瀏覽器內(nèi)部工作原理[https://kb.cnblogs.com/page/129756/] 作者: T...
    我是強(qiáng)強(qiáng)閱讀 1,244評(píng)論 0 2
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,654評(píng)論 1 32
  • 轉(zhuǎn)載說(shuō)明 一、介紹 瀏覽器可以被認(rèn)為是使用最廣泛的軟件,本文將介紹瀏覽器的工作原理,我們將看到,從你在地址欄輸入g...
    17碎那年閱讀 2,525評(píng)論 0 22
  • 2018.6.21 周四 今天有位老師休息。另一位老師上午排滿了課。于是我給孩子們當(dāng)了一回老師。 本來(lái)一直小時(shí)候的...
    LoveVicky閱讀 150評(píng)論 0 0

友情鏈接更多精彩內(nèi)容