Merci de nous aider à l'avance. Pouvez-vous s'il vous plaît me aider à trouver l'erreur que je fais dans ce code:récursive JS question
<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) est une méthode récursive qui rassemble les enfants de id parent passé (en appelant getChildren (parentId)) et ensuite il se récurrente pour chaque enfant de rassembler des enfants d'enfants et ainsi de suite. La sortie que j'attends de returnValue est la suivante:
Un tableau avec 2 éléments depuis parentId « 1 » a 2 enfants « 2 » et « 3 ». Alors "2" aura un sous-tableau de 1 élément "4" et "3" aura un sous-tableau de 2 éléments "5" et "6". Mais j'obtenir cela et chaque subchild a 2 enfants et ainsi de suite endlessely, s'il vous plaît me aider à comprendre le bug dans le code:
Lorsque vous définissez quelque chose dans une fonction que vous essayez d'utiliser plus tard, j'utiliser 'let itemData = new Object();'. Après toutes les exécutions, itemData sera probablement défini sur la dernière exécution exécutée. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let contient des informations sur let. –
returnValue = []; <--- global – epascarello