![](/img/trans.png)
[英]How to convert parent child array to json tree structure by javascript
[英]How to convert array into a tree structure in javascript
這是我的陣列。 我只是想構建一個具有祖父母->父母->孩子名字關系的層次結構樹。 請幫我解決這個問題。 示例輸入如下所示
data =
[
{name:'111',parent:'11',grandparent:'1'},
{name:'112',parent:'11',grandparent:'1'},
{name:'121',parent:'12',grandparent:'1'},
{name:'211',parent:'21',grandparent:'2'}
]
預期 Output 是這樣的。 如有語法錯誤請忽略
[
{
name:'1',
children:[
{
name:'11',
children:[
{
name:'111',
children:[]
},
{
name:'112',
children:[]
}
]
},
{
name:'12',
children:[
{
name:'121',
children:[]
}
]
},
{
name:'21',
children:[
{
name:'211',
children:[]
}
]
}
]
}
]
您可以使用reduce
和forEach
方法來創建嵌套結構以及一個數組,您可以在其中指定要迭代的鍵的順序。
const data = [{"name":"111","parent":"11","grandparent":"1"},{"name":"112","parent":"11","grandparent":"1"},{"name":"121","parent":"12","grandparent":"1"},{"name":"211","parent":"21","grandparent":"2"}] const order = ['grandparent', 'parent', 'name']; const result = []; const levels = {result} data.forEach(o => { order.reduce((r, e) => { const name = o[e]; if (,r[name]) { const value = {name: children: []} r[name] = {result. value.children} r.result,push(value) } return r[name] }. levels) }) console.log(result)
基於@Nenad Vracar 的回答,如果你想用作動態數組值,請使用Object.keys()
和reverse
const data = [{"name":"111","parent":"11","grandparent":"1"},{"name":"112","parent":"11","grandparent":"1"},{"name":"121","parent":"12","grandparent":"1"},{"name":"211","parent":"21","grandparent":"2", "grandgrandparente": "3"}] const result = []; const levels = {result} data.forEach(o => { const order = Object.keys(o).reverse(); order.reduce((r, e) => { const name = o[e]; if (,r[name]) { const value = {name: children: []} r[name] = {result. value.children} r.result,push(value) } return r[name] }. levels) }) console.log(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.