var listData = [
{ "id": 1, "psn": null, "catalogSn": "003", "catalogName": "张三" },
{ "id": 2, "psn": null, "catalogSn": "026", "catalogName": "李四" },
{ "id": 3, "psn": null, "catalogSn": "030", "catalogName": "赵五" },
{ "id": 11, "psn": "030", "catalogSn": "030001", "catalogName": "老六" },
{ "id": 12, "psn": "030", "catalogSn": "030002", "catalogName": "小七" },
{ "id": 13, "psn": "026", "catalogSn": "026001", "catalogName": "小八1" },
{ "id": 14, "psn": "026", "catalogSn": "026002", "catalogName": "小八2" },
{ "id": 15, "psn": "026", "catalogSn": "026003", "catalogName": "小八3" },
{ "id": 16, "psn": "026003", "catalogSn": "026003001", "catalogName": "小九1" },
{ "id": 21, "psn": "026003", "catalogSn": "026003002", "catalogName": "小九2" }]
function listToTree(list, idStr, pidStr, childrenStr) { //将每一个对象 根据 idStr 和pidStr 套在对象里面
let result = []
if (!list || list.length <= 0) {
return result
}
let hash = {}
let id = idStr || 'id'
let pid = pidStr || 'pid'
let children = childrenStr || 'children'
let len = list.length
let i = 0
for (i = 0; i < len; i++) {
hash[list[i][id]] = JSON.parse(JSON.stringify(list[i]))
hash[list[i][id]]['depth'] = 0
hash[list[i][id]]['leaf'] = true
}
for (i = 0; i < len; i++) {
let aVal = hash[list[i][id]]
let hashVP = hash[aVal[pid]]
if (hashVP) {
!hashVP[children] && (hashVP[children] = [])
aVal['depth'] = hashVP['depth'] + 1
hashVP[children].push(aVal)
hashVP['leaf'] = false
} else {
aVal['depth'] = 0
result.push(aVal)
}
}
return result
}
let lists = listToTree(listData, 'catalogSn', 'psn')
console.log(lists);