感谢您提前帮忙。能否请你帮我看看,我在此代码做了错误:递归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