ブックマークのツリー(フォルダとサブフォルダに分類されている)をループし、それらの「パス」を使用して各フォルダのタグのリストを作成しようとしています。たとえば、「Dev」>「JS」に保存されているブックマークです。ブログのタグは次のようにマッピングされます['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);
});
私が期待するのはconsole.log
、
[ 'category1', 'subcat1', ...]
その後
['category2, 'subcatA', ...]
私が最後までに終わるのは
['category1, 'subcat1', ..., 'category2', 'subcatA', ...]
それは通過してすべての情報を引き出しますが、スタックをステップアップすると、その「レベル」の引数が保存されていないようです。おそらく再帰/クロージャに関係しているのではないかと思います。 、しかし私は迷子になっています!
申し訳ありませんが、これが意味をなさない場合は、頭をそのままにするのに苦労しています。お知らせください。必要に応じて、さらに説明を試みることができます。