0
我做了一個函數以便在樹對象中查找元素。我的函數可以工作,但有時函數在查看所有樹之前沒有找到值並停下來。Javascript在遞歸數組中找到值
我無法解釋它爲什麼有時會有效,有時不會。
這裏是我的小提琴:http://jsfiddle.net/3cdwA/2/
當你點擊類別,如「科學」你可以看到,它的工作原理。但是,如果你點擊「Bandes-Dessinées」,它應該顯示「漫畫」,但它不會。
這裏是我的遞歸函數:
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 [];
}
這裏是我的測試樹:
tree = {
'id': 1,
'name': 'Mes Bookmarks',
'folders': [
{
'id': 2,
'name': 'Sciences',
'folders': [
{
'id': 3,
'name': 'Biologie',
'folders': [
{
'id': 12,
'name': 'Neurologie',
'folders': []
}
]
},
{
'id': 4,
'name': 'Astrophysique',
'folders': [
{
'id': 8,
'name': 'Cosmologie',
'folders': [
{
'id': 10,
'name': 'Système solaire',
'folders': []
}
]
},
{
'id': 9,
'name': 'Trous noirs',
'folders': []
}
]
},
{
'id': 5,
'name': 'Mathématiques',
'folders': []
}
]
},
{
'id': 6,
'name': 'Actualités',
'folders': [
{
'id': 11,
'name': 'Monde',
'folders': []
}
]
},
{
'id': 7,
'name': 'Bandes-dessinées',
'folders': [
{
'id': 13,
'name': 'Comics',
'folders': []
}
]
}
]
};
絕對!非常感謝。 – KmeCnin
:)有工具可以防止這些問題。嘗試使用http://www.jshint.com/並使用'「use strict」',它會引發錯誤。 – elclanrs