我需要通過樹中的id查找節點。爲此,我正在兩個嵌套循環的幫助下。但是返回undefined。在遞歸函數中從循環中返回一個值
function searchInTreeById(node, matchingId) {
var res;
if (node.select('id').get() == matchingId) {
res = node.get();
return res
} else {
if (node.exists('childObjects')) {
node.select('childObjects').map(function (cursor, i) {
cursor.select('children').map(function (cursorChild, j) {
if (cursorChild.select('id').get() === matchingId) {
// console.log(cursorChild.get()) //this console.log is execute
res = cursorChild.get();
return res;
} else {
// console.log(cursorChild.get())
searchInTreeById(cursorChild, matchingId)
}
})
})
} else {
res = node;
}
}
return res
}
忽略的'searchInTreeById'看起來很懷疑結果(不知道什麼是「猴麪包樹」的,所以也許它是確定在不管它是什麼) –
@AlexeiLevenkov如果我設置解析度= searchInTreeById(cursorChild, matchId),然後func返回上次訪問的節點... –
注意:'map'通常是執行搜索的錯誤方式 - 很可能有另一個函數(類似於Array.find),它允許停止迭代中間。 –