感謝您提前幫忙。能否請你幫我看看,我在此代碼做了錯誤:遞歸JS問題
<script>
function getChildrenRecursively(parent) {
returnValue = [];
var children = getChildren(parent);
children.forEach(function(child, index, array) {
itemData = new Object();
itemData.id = parent + "_" + index + "_" + child;
itemData.items = getChildrenRecursively(child);
returnValue.push(itemData);
})
return returnValue;
}
function getChildren(parentId) {
if (parentId == 1) return [2, 3];
if (parentId == 2) return [4];
if (parentId == 3) return [5, 6];
if (parentId == 4) return [];
if (parentId == 5) return [];
if (parentId == 6) return [];
}
console.log(getChildrenRecursively(1));
</script>
getChildrenRecursively(parentId的),是一家集通過父ID的兒童遞歸方法(通過調用的getChildren(parentId的) )然後它爲每個孩子遞歸地調用自己以收集孩子的孩子等等。我期望從returnValue獲得的輸出是:
自parentId「1」以來有2個元素的數組有2個子元素「2」和「3」。然後「2」將有1個元素「4」的子陣列,並且「3」將具有2個元素「5」和「6」的子陣列。但是,我得到這個和每個subchild有2個孩子等endlessely,請幫我找出錯誤代碼:
當您在稍後嘗試使用的函數中設置某些內容時,我會使用let itemData = new Object();'。在所有的執行之後,itemData可能會被設置爲最後執行的任務。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let有關於let的信息。 –
returnValue = []; <---全球 – epascarello