我试图遍历书签树(分类到文件夹和子文件夹),并使用它们的“路径”为每个文件夹创建标签列表。 - 存储在“开发”>“JS”>“博客”书签将有标签映射为['Dev, 'JS, 'Blogs']
递归/嵌套函数 - 参数范围
使用chrome.bookmarks.getTree
结构的Chrome浏览器的默认之一,它看起来像这样:
[{
'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);
});
什么,我期望是为console.log
显示
[ 'category1', 'subcat1', ...]
然后
['category2, 'subcatA', ...]
由我结束而终止得到的是
['category1, 'subcat1', ..., 'category2', 'subcatA', ...]
它经历和拉所有的信息,但是在我看来,当我退后一步了堆叠的'水平'的参数还没有被保存..我认为这可能是与递归/闭包,但我失去了!
对不起,如果这没有意义,我正在努力让我的头像它,让我知道,我可以尝试进一步解释,如果有必要!
什么是'arg'变量? – alnorth29
@ alnorth29错误!我现在编辑它,哎呀! – Paul