0
나는이 작은 코드 조각을 사용하여 평면 목록 (정확하게 대상체)에서 계층 구조를 만들려고합니다.Javascript 함수는 undefined를 반환합니다. 이유가 무엇입니까?
AFAIK이 기능은 작동하지만 목록의 마지막 항목에서 작동합니다 findParent 함수는 undefined를 반환합니다. 반환하기 전에 바로 호출하는 console.log가 올바른 값을 제공하더라도. 이걸 일으킬 수있는 어떤 생각?
var fl = [{
"pk": 1,
"title": "paul",
"parent": 3,
"level": 2
}, {
"pk": 2,
"title": "ringo",
"parent": null,
"level": 0
}, {
"pk": 3,
"title": "john",
"parent": 2,
"level": 1
}];
var ho = {};
var looplevel = 0;
var found = 0;
function findParent (ho,id){
for (i in ho) {
ob = ho[i];
if (ob.pk === id) {
console.log(ob);
return ob;
}
if (ob.children !== undefined){
findParent(ob.children,id);
}
}
}
while (fl.length != found) {
for (var i in fl) {
var item = fl[i];
if (item.level === looplevel) {
item.children = {};
if (looplevel === 0) {
ho[item.pk] = item;
console.log("adding " + item.title + " to hl");
found += 1;
} else {
console.log("adding " + item.title + " to " + item.parent);
ww = findParent(ho,item.parent);
console.log(ww);
ww.children[item.pk] = item;
found += 1;
}
looplevel += 1;
}
}
}
console.log(ho);