I have the following recursive function but it doesnt work... It searches as far down as 'firstPageChild' and then finishes. Can anyone spot what is wrong here?.. I'm sure its something simple but its stumping me at the moment..
var pageMap = [{"pageID" : "mainPage",
"children": [{"pageID" : "firstPage",
"children": [{"pageID" : "firstPageChild",
"children": []
}]
},
{"pageID" : "secondPage",
"children": [{"pageID" : "secondPageChild1",
"children": []
}, {"pageID" : "secondPageChild2",
"children": []
}]
},
{"pageID" : "thirdPage",
"children": [{"pageID" : "thirdPageChild1",
"children": []
}, {"pageID" : "thirdPageChild2",
"children": []
}]
}]
}];
function findObjectById(root, id) {
debugger;
var k, pageVar;
if (root.children) {
for (k in root.children) {
pageVar = root.children[k];
if (pageVar.pageID == id) {
return pageVar;
}
else if (pageVar.children.length) {
return findObjectById(pageVar, id);
}
}
}
};
for (var i = 0, len = pageMap.length; i < len; i++) {
var myObj = findObjectById(pageMap[i], "secondPageChild2");
}
console.log(myObj);
asked Dec 7, 2015 at 11:40
blu10
6842 gold badges8 silver badges30 bronze badges
1 Answer 1
Replace return findObjectById(pageVar, id); on the
pageSrch = findObjectById(pageVar, id);
if(pageSrch){
return pageSrch;
}
answered Dec 7, 2015 at 11:51
Alexander Abumov
981 silver badge7 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
lang-js