プログラミング初学者のための実務につながる練習問題 JavaScript012 再起処理
今日のタスク
以下のようなデータがあります。
const data = [
{
id: 100,
name: 'AAA',
children: [
{id: 101, name: 'service1', code: 001},
{id: 102, name: 'service2', code: 002},
{id: 103, name: 'service3', code: 003},
]
},
{
id: 200,
name: 'BBB',
children: [
{
id: 201,
name: 'service4',
children: [
{id: 202, name: 'service5', code: 005},
{id: 203, name: 'service6', code: 006},
]
},
]
}
]
すべての children の配列をマージした配列を作成してください。以下のような感じです。
[ { id: 101, name: 'service1', code: 1 },
{ id: 102, name: 'service2', code: 2 },
{ id: 103, name: 'service3', code: 3 },
{ id: 202, name: 'service5', code: 5 },
{ id: 203, name: 'service6', code: 6 } ]
children がある階層が異なることに注意してください。
実装
再帰を使って実装してみました。少し難易度が高いかもしれません。
const getCode = data => {
let result = data.reduce((prev, current) => {
if(current.children === undefined) {
return [...prev, current]
}
return [...prev, ...getCode(current.children)]
}, [])
return result
}
お疲れ様でした。
ディスカッション
コメント一覧
まだ、コメントがありません