樹形結構常用於省、市、縣、區的層級展示,會計科目層級展示,機構樹,菜單權限等
轉成樹形結構的數據中需要包含當前節點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 }