Javascript 递归/嵌套函数-参数范围
我试图循环浏览书签树(按文件夹和子文件夹排序),并使用它们的“路径”为每个文件夹创建标记列表,例如。 -存储在“Dev'>'JS'>'Blogs'中的书签会将标记映射为Javascript 递归/嵌套函数-参数范围,javascript,recursion,google-chrome-extension,Javascript,Recursion,Google Chrome Extension,我试图循环浏览书签树(按文件夹和子文件夹排序),并使用它们的“路径”为每个文件夹创建标记列表,例如。 -存储在“Dev'>'JS'>'Blogs'中的书签会将标记映射为['Dev',JS',Blogs'] 该结构的Chrome默认使用Chrome.bookmarks.getTree,如下所示: [{ 'title' : '', children : [{ 'title' : 'a title', 'url' : 'http://www.
['Dev',JS',Blogs']
该结构的Chrome默认使用Chrome.bookmarks.getTree
,如下所示:
[{
'title' : '',
children : [{
'title' : 'a title',
'url' : 'http://www.example.com'
},
{
'title' : 'a folder category',
'children' : [{...}]
},
}]
}];
…我的代码是:
function processTreeNodes(tree, tags) {
console.log(tags);
var t = tags || [];
for (var i=0; i < tree.length; i++) {
processNode(tree[i], t);
}
}
function processNode(n, tags) {
if(n.children) {
tags.push(n.title);
//It's a group, loop over it
processTreeNodes(n.children, tags);
} else {
//Do something with the bookmark
}
}
chrome.bookmarks.get(function(bmTree) {
processTreeNodes(bmTree);
});
然后
['category2, 'subcatA', ...]
我最后得到的是
['category1, 'subcat1', ..., 'category2', 'subcatA', ...]
它会遍历并提取所有信息,但在我看来,当我返回堆栈时,该“级别”的参数尚未保存。。我认为这可能与递归/闭包有关,但我迷路了
对不起,如果这没有意义,我正在努力让我的头围绕它是,让我知道,我可以尝试进一步解释,如果必要的 看起来您只创建了一个数组,然后将其传递给所有递归子函数。我将让您自己编写代码,但看起来您需要在层次结构中的每个点克隆数组,以便将引用传递给新对象,而不是始终传递给同一个对象。@alnorth29错误!我现在编辑好了,哎呀!谢谢,就是这样,我现在已经整理好了!
['category1, 'subcat1', ..., 'category2', 'subcatA', ...]