我試圖遍歷書籤樹(分類到文件夾和子文件夾),並使用它們的「路徑」爲每個文件夾創建標籤列表。 - 存儲在「開發」>「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