Javascript在递归数组中查找值
为了在树对象中查找元素,我创建了一个函数。我的函数可以工作,但有时函数找不到值,并在查看所有树之前停止 我无法解释为什么它有时有效,有时无效 这是我的小提琴: 当你点击像“科学”这样的分类时,你可以看到它是有效的。但如果你点击“Bandes Dessinées”,它应该会显示“漫画”,但它不会 这是我的递归函数:Javascript在递归数组中查找值,javascript,recursion,Javascript,Recursion,为了在树对象中查找元素,我创建了一个函数。我的函数可以工作,但有时函数找不到值,并在查看所有树之前停止 我无法解释为什么它有时有效,有时无效 这是我的小提琴: 当你点击像“科学”这样的分类时,你可以看到它是有效的。但如果你点击“Bandes Dessinées”,它应该会显示“漫画”,但它不会 这是我的递归函数: function getChildrenFromCurrentFolder(tree, targetFolder) { console.log(tree); // Find recur
function getChildrenFromCurrentFolder(tree, targetFolder) {
console.log(tree);
// Find recursivly all direct children of targeted folder
if (targetFolder == tree.id) {
return tree.folders;
} else if (tree.folders.length > 0) {
var folders = [];
for (i = 0; folders.length == 0 && i < tree.folders.length; i++) {
folders = getChildrenFromCurrentFolder(tree.folders[i], targetFolder);
}
return folders;
}
return [];
这是一个简单但常见的错误。您忘记声明循环变量,在创建被重用的全局变量时进行递归时会遇到麻烦:
function displayFolders() {
...
for (var i = folders.length-1; i >= 0; i--)
... --^--
}
function getChildrenFromCurrentFolder(tree, targetFolder) {
...
for (var i = 0; folders.length == 0 && i < tree.folders.length; i++) {
... --^--
}
function getBreadcrumb(tree, targetFolder, breadcrumb) {
...
for (var i = 0; i < tree['folders'].length; i++)
... --^--
}
函数displayFolders(){
...
对于(var i=folders.length-1;i>=0;i--)
... --^--
}
函数getChildrenFromCurrentFolder(树,目标文件夹){
...
对于(var i=0;folders.length==0&&i
我不确定所有其他逻辑是否正确,但这肯定会改变行为
绝对!非常感谢。:)有一些工具可以防止这些问题。尝试使用
“use strict”
,它会抛出一个错误。
function displayFolders() {
...
for (var i = folders.length-1; i >= 0; i--)
... --^--
}
function getChildrenFromCurrentFolder(tree, targetFolder) {
...
for (var i = 0; folders.length == 0 && i < tree.folders.length; i++) {
... --^--
}
function getBreadcrumb(tree, targetFolder, breadcrumb) {
...
for (var i = 0; i < tree['folders'].length; i++)
... --^--
}