js將平鋪的對象數組轉換成樹形結構


樹形結構常用於省、市、縣、區的層級展示,會計科目層級展示,機構樹,菜單權限等

轉成樹形結構的數據中需要包含當前節點id,以及父級節點id---(pid或parentId)

具體實現方法如下:

function treeDataTranslate(data, id = "id", pid = 'parentId') {
  // console.log("treeDataTranslate---", data);
  if (data.length === 0) return []
  var res = []
  var temp = {}
 
  for (var i = 0; i < data.length; i++) {
    // 如果id以010102形式保存,並且沒有pid,可以放開下面if語句
    // if (data[i].id.length - 2 > 0) {
      // data[i].pid = data[i].id.substr(0, data[i].id.length - 2)
    // }
 
    temp[data[i][id]] = data[i]
  }
 
  for (var k = 0; k < data.length; k++) {
    if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) {
      if (!temp[data[k][pid]]['children']) {
        temp[data[k][pid]]['children'] = []
      }
      if (!temp[data[k][pid]]['_level']) {
        temp[data[k][pid]]['_level'] = 1
      }
      data[k]['_level'] = temp[data[k][pid]]._level + 1
      temp[data[k][pid]]['children'].push(data[k])
    } else {
      res.push(data[k])
    }
  }
  // console.log("res---", res, temp);
  return res
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM