2015-12-07 4 views
0

У меня есть следующая рекурсивная функция, но она не работает ... Он выполняет поиск так же далеко, как и 'firstPageChild', а затем заканчивается. Можно ли определить, что здесь не так? .. Я уверен, что его что-то простое, но его топала меня на данный момент ..Рекурсивная функция javascript не работает полностью

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); 

http://jsfiddle.net/3nkfbbyy/

ответ

1

Заменить return findObjectById(pageVar, id); на

pageSrch = findObjectById(pageVar, id); 
if(pageSrch){ 
    return pageSrch; 
} 

JSFiddle

+0

спасибо ... оцените помощь – blu10

Смежные вопросы