0
我有一個應用程序,其中的對象用於顯示用戶系統上文件的樹視圖。它的結構是這樣的:在遞歸函數中保留對象引用
[{
text: 'C:/',
type: 'dir',
nodes: [
{
text: 'foo',
type: 'dir',
nodes: [] // And so on
},
{
text: 'bar',
type: 'file'
}
}]
按照約定,我想要先顯示目錄,然後再顯示文件。不幸的是,無論項目類型如何,我的數據都按字母順序檢索。
爲了解決這個問題我寫了一個漂亮的遞歸函數
var sort = function (subtree)
{
subtree = _.sortBy(subtree, function (item)
{
if (item.nodes)
{
sort(item.nodes)
}
return item.type
});
}
var tree = someTreeData;
sort(tree);
我使用lodash字母順序按文件類型排序每個nodes
陣列。不幸的是,子樹似乎並沒有引用樹對象,因爲當我登錄其輸出時,它仍然未排序。我該如何補救?
工作完美,只需稍作修改''.forEach(function(node){sortTree(node.nodes)});''' – Harangue