我有一棵樹/穿越的對象,看起來像這樣:With Underscore,我如何遞歸地壓扁一組對象?
var data = {children: [
{
name: 'foo',
url: 'http://foo',
children: [
{
name: 'bar',
url: 'http://bar',
children: []
}
]
},
{
name: 'baz',
url: 'http://baz',
children: []
},
{
name: 'biff',
children: []
}
]};
我需要做的就是能夠將數據壓扁成一個單一的維列表什麼:
var flattenedData = [{name: 'foo', url: 'http://foo'}, {name: 'bar', url: 'http://bar'}, {name: 'baz', url: 'http://baz'}, {name: 'biff'}];
目前,我我創建了一個遞歸輔助函數來遍歷數據結構並將結果推送到數組上。如果可能的話,我希望在功能上做得更好。像這樣的:
var flattenedData = _.chain(data.children).flatten().filter(function(item){//real filtering; return item;}).value();
問題是,展平似乎並不平坦的對象數組,只是簡單的數組。我可能是錯的。
我該如何以更有效的方式執行此任務,而無需在幫助函數中遍歷樹?
更簡單的寫5行遞歸代碼。 – dfsq 2014-10-20 13:40:30