如何将具有父子关系的对象数组展平为单个数组,该数组是每个带有Underscore的父子对象的乘积?假设以下内容:
var parents=[
{id:1,name:'John',children:[{id:1,name:'Nancy'},{id:2,name:'Bob'}]},
{id:2,name:'Jack'},
{id:3,name:'Jane',children:[{id:1,name:'Chloe'},{id:2,name:'Lisa'}]}
]
我需要以下输出:
var aggregate=[
{id:1,name:'John',child:{id:1, name: 'Nancy'}},
{id:1,name:'John',child:{id:2, name: 'Bob'}},
{id:2,name:'jack',child:null},
{id:1,name:'Jane',child:{id:1, name: 'Chloe'}},
{id:1,name:'Jane',child:{id:2, name: 'Lisa'}}
]
我有一种需要使用map
和的感觉chaining
。
提前致谢。
您可以将每个父对象映射到一个子数组,然后将其展平以获取parent + child的列表:
var aggregate = _(parents).chain().
map(function(parent) {
// no child case
if ((!parent.children) || (!parent.children.length))
return _.extend(_.omit(parent, 'children'), {child: null});
// array of parent+child
return _.map(parent.children, function(child) {
return _.extend(_.omit(parent, 'children'), {child: child});
});
}).flatten().value();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句