树形结构常用于省、市、县、区的层级展示,会计科目层级展示,机构树,菜单权限等
转成树形结构的数据中需要包含当前节点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 }