我正在嘗試爲節點中存儲在MongoDB中的頁面生成URL。在樹中遍歷javascript
使用下面的函數我想遍歷一個javascript對象並顯示每個元素的路徑。
我快要到了,但我被卡住了 - 甚至可能有更好的方法來使用異步(我必須承認,讓我有點困惑)做到這一點。
功能:(demo)
function printTree(people, slug) {
for (var p = 0; p < people.length; p++) {
var root = people[p];
slug = slug + root.name + "/";
console.log(slug);
if (root.children.length > 0) {
var childrenCount = root.children.length;
for (var c = 0; c < childrenCount; c++) {
if (root.children[c].children.length > 0) {
printTree(root.children[c].children, slug + root.children[c].name + "/");
}
}
}
}
};
輸出:
/michael/
/michael/angela/oscar
/michael/meredith/creed
/michael/meredith/creed/kelly
預期輸出:
/michael/
/michael/angela/
/michael/angela/oscar/
/michael/meredith/
/michael/meredith/creed/
/michael/meredith/kelly/
對象:
[
{
"name": "michael",
...
"children": [
{
"name": "angela",
...
"children": [
{
"name": "oscar",
...
"children": []
}
]
},
{
"name": "meredith",
...
"children": [
{
"name": "creed",
...
"children": []
},
{
"name": "kelly",
...
"children": []
}
]
},
{ ... }
]
}
]
如果有幫助,數據使用嵌套集的存儲:https://github.com/groupdock/mongoose-nested-set 所以有可能是一個更好的辦法做到使用嵌套組(否定了上述目的)以上工作。
你絕對釘它! http://jsfiddle.net/cT8wn/2/ –
嗨,這適用於邁克爾,安吉拉和奧斯卡,但是一旦樹到達邁克爾的其他孩子,它就會破裂。 [見demo](http://jsfiddle.net/WHZUE/)meredith是angela的兄弟姐妹,但輸出顯示meredith是angela的孩子。 – logikal
這是因爲這一行:'slug = slug + people [i] .name +'/';'爲你解決 –