중첩 된 JSON을 읽고 항목을 인쇄하는 코드를 작성하려고합니다. 나중에이 메뉴를 생성 할 계획입니다.자바 재귀 함수가 작동하지 않습니다.
function menuize(m) {
if (m instanceof Array) {
for(i = 0; i < m.length; i++) {
for(p in m[i]) {
menuize(m[i][p]);
}
}
} else if (m instanceof Object) {
for(p in m) {
menuize (m[p]);
}
} else {
console.log('Label: ' + m);
}
}
menuize(m)
호출 m
는 XHR은을이다 JSON.parse(XHR.responseText)
를 사용하여 평가 된 JSON 객체 인 시작 : 나는 다음과 같은 재귀 함수를 사용하고
{
"label": "Root of Menu",
"child": [
{
"label": "Menu 1",
"child": [
{
"label": "Menu 1.1",
"child": [
{
"label": "Menu 1.1.1"
},
{
"label": "Menu 1.1.2"
}
]
},
{
"label": "Menu 1.2",
"child": [
{
"label": "Menu 1.2.1"
},
{
"label": "Menu 1.2.2"
}
]
},
{
"label": "Menu 1.3",
"child": [
{
"label": "Menu 1.3.1"
},
{
"label": "Menu 1.3.2"
}
]
}
]
},
{
"label": "Menu 2",
"child": [
{
"label": "Menu 2.1"
},
{
"label": "Menu 2.2"
}
]
},
{
"label": "Menu 3",
"child":
{
"label": "Menu 3.1"
}
}
]
}
을 다음과 같이
json으로 콘텐츠입니다 XMLHttpRequest
오브젝트를 사용하여 데이터를 검색합니다. 데이터가 완전히 잘 읽혀서 문제가되지 않는 것을 보았습니다.
이제 함수는 다소 정확합니다. 가장 안쪽에있는 child
에 도달 할 때까지 제대로 작동하지만 그 후에는 나머지 항목을 한 레벨 위로 제대로 인쇄하지 못합니다. 에.
당신이 무슨 일이 일어나고 있는지 이해하는 데 도움이 될 것입니다 생성 된 출력 : 및
는t: Root of Menu
t: Menu 1
t: Menu 1.1
t: Menu 1.1.1
t: Menu 1.1.2
나는 정확히 무슨 일이 일어나고 있는지 이해할 수 없다 왜해야하지 항목 상단에 상대적입니다 Menu 1.2
, Menu 2
(같은 레벨)을 인쇄하십시오.
누군가 통찰력을 제공하고 이해하도록 도와 주시겠습니까? 감사합니다.
대단히 감사합니다. 그것은 작동합니다! 내가 그것을 놓쳤다라고 생각할 수 없다! – abhishekcghosh