我有一棵树/穿越的对象,看起来像这样: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