nan*_*ots 5 javascript recursion polymer
我有一个功能,搜索文件夹树,找到所选文件夹的父文件夹.
这是功能.
getParentFolder: function (searchroot, childFolder) {
searchroot.subfolders.forEach(function (folder) {
if (folder.key == childFolder.key) {
return searchroot;
}
else {
if (folder.subfolders) {
return this.getParentFolder(folder, childFolder);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
当我打电话给这个时 this.getParentFolder(rootFolder, childFolder);
它只是给了我:Uncaught TypeError:this.getParentFolder不是函数为什么会这样?在同一个文件中,我称其他功能完全正常.这是我无法调用的唯一功能.是因为递归吗?
this在forEach方法中更改上下文时,必须保留变量.
getParentFolder: function(searchroot, childFolder) {
var self = this;
searchroot.subfolders.forEach(function(folder) {
if (folder.key == childFolder.key) {
return searchroot;
} else {
if (folder.subfolders) {
return self.getParentFolder(folder, childFolder);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
此外,return声明将无法按您的方式工作.我建议你使用for循环枚举数组:
getParentFolder: function(searchroot, childFolder) {
for (var i = 0; i < searchroot.subfolders.length; i++) {
var folder = searchroot.subfolders[i];
if (folder.key == childFolder.key) {
return searchroot;
} else {
if (folder.subfolders) {
return self.getParentFolder(folder, childFolder);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |