js 트 리 구 조 를 배열 로 변환
13003 단어 전단 면접 알고리즘 문제
나무 구조
const treeStructure = {
name: Id, // name Id, Number, String.
children: [treeStructure], // treeStructure
//
}
실례
const treeData = {
name: 1,
children: [{
name: 2,
children: [{
name: 4,
children: [{
name: 7,
children: [{
name: 8,
children: []
}, {
name: 9,
children: []
}]
}],
}, {
name: 5,
children: [],
}]
}, {
name: 3,
children: [{
name: 6,
children: [],
}],
}],
}
b. 배열 구조
[{
//
name: Id,
children: [Id],
}]
인 스 턴 스 출력 결과
[
{ name: 1, children: [ 2, 3 ] },
{ name: 2, children: [ 4, 5 ] },
{ name: 4, children: [ 7 ] },
{ name: 7, children: [ 8, 9 ] },
{ name: 8, children: [] },
{ name: 9, children: [] },
{ name: 5, children: [] },
{ name: 3, children: [ 6 ] },
{ name: 6, children: [] }
]
2. 알고리즘 구현
//
// 1. treeData , []
// 2. treeData [ ].concat(transfer( ))
// transfer , , :arrayData
function transfer(treeData) {
if (!(!treeData.hasOwnProperty('name') || !treeData)) {
let arr = []
let obj = {}
obj.name = treeData.name
obj.children = treeData.children.map(value => {
// [1] arr = arr.concat(transfer(value))
return value.name
})
arr.push(obj)
// [1] ,
treeData.children.forEach(value => {
arr = arr.concat(transfer(value))
})
//
return arr
} else { // treeData
return []
}
}
const arrayData = transfer(treeData); // arrayData , item tree
console.log(arrayData)
js 배열 을 트 리 구조 로 변환