これは私の配列です。祖父母->親->子の名前の関係で階層ツリーを組み立てようとしています。これを修正するのを手伝ってください。サンプル入力は以下のようになります
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'}
]
期待される出力は次のようなものです。構文エラーがある場合は無視してください
[
{
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
メソッドを使用して、ネストされた構造と、反復するキーの順序を指定できる1つの配列を作成できます。
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)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加