呃,其实你这个就是个简单的列表转树结构...
function listToTree (srcList) {
let destList = []
srcList.forEach(pathList => {
let levelList = destList
for (let name of pathList) {
let obj = levelList.find(item => item.name === name)
if (!obj) {
obj = { name, sub: [] }
levelList.push(obj)
}
levelList = obj.sub
}
})
return destList
}
测试:
list = [
['广东', '广州', '荔湾'],
['广东', '广州', '番禺'],
['广东', '珠海'],
]
console.log(JSON.stringify(listToTree(list)))
输出
[
{
"name":"广东",
"sub":[
{
"name":"广州",
"sub":[
{
"name":"荔湾",
"sub":[
]
},
{
"name":"番禺",
"sub":[
]
}
]
},
{
"name":"珠海",
"sub":[
]
}
]
}
]