2
나는 현재이 양식에 의해 주어진 나무, 변환하려고
{
"name": "root",
"children":
[{"name":"Parent",
"children":
[{
"name":"Child1",
"children": ["toy1"]
},
{
"name":"Child2"
"children":
[{
"name":"Nephew",
"children": ["toy2", "toy3"]
}]
}]
}]
}
: 다음과 같은 형식의 트리로
{"Parent":
{
"Child1": ["toy1"],
"Child2":
{
"Nephew": ["toy2", "toy3"]
}
}
}
을
그래서 기본적으로 나는 나무의 구조를 표준화하고 싶습니다. 나는 시도 그 다음 코드 :
function recurse(elem) {
if (typeof(elem) !== "object") return elem;
level = [];
for (let part in elem) {
level.push({
name: part,
children: recurse(elem[part])
});
console.log(level);
}
return level;
}
restrucTree = {
name: "root",
children: recurse(tree)
};
하지만 분명히 (이 경우 "부모"의) 루트 노드부터 객체의 정확한 재귀 및 건물에 관한 약간의 오류가 거기에 포함되어 있지 않습니다 있습니다 변형 된 트리. 또한 트리가 여러 하위 트리에서 분기되는 경우이 메서드는 실패합니다. 이 경우 마지막 하나만 인식됩니다. 가장 좋은 추측은 재귀 스택을 팝하는 동안 저장된 객체가 손실되지만 어떻게 든 솔루션으로 변환 할 수 없다는 것입니다. 이 오류가 발생한 곳에서 생각해보십시오. 매우 감사하게 생각합니다.
은 와우, 마법처럼 작동합니다! 빠른 도움에 감사드립니다. 내 코드에서 내 실수가있는 곳을 보셨습니까? – wittenator
개체를 확인하지만 배열도 개체입니다. 배열에 대한 검사가 필요합니다. –
흠, 그게 사실이지만, 순회의 잎 부분은 실제로 괜찮 았어. 한 번에 여러 가지 가지를 사용하는 것이 아니라 다른 형제 - 하위 트리에서 이전에 수집 된 모든 정보를 삭제하는 것처럼 보였습니다. 그럼에도 불구하고, 어쩌면 내가 직접 알아볼 것이다. – wittenator