我在数组中有字符串文字的集合
var selected = ['a', 'b.c', 'b.c.d', 'b.c.d.e'];
如何使用JavaScript创建下面的JSON树结构?任何帮助都将是可观的。
[{
"title": "a",
"id": "a"
},
{
"title": "b",
"id": "b",
"children": [{
"title": "c",
"id": "c",
"children": [{
"title": "d",
"id": "d",
"children": [{
"title": "e",
"id": "e"
}]
},
{
"title": "f",
"id": "f"
}
]
}]
}
]
recursion
var selected = ['a', 'b.c', 'b.c.d', 'b.c.d.e', 'b.c.g'];
var result = {};
selected.forEach(i =>
i.split('.').reduce((result, val) => result[val] = result[val] || {}, result)
)
function toTree(o) {
return Object.entries(o).map(([k, v]) => {
let r = {'title': k, 'id': k, 'children': toTree(v)}
!r.children.length && delete r.children
return r
})
}
result = toTree(result)
console.log(result)