2016-08-24 16 views
2

我一直在努力学习一些loadash,以及如何使用一些更高级的技巧来正确地提取数据。单个对象和查找非常简单,但我试图通过groupId拉取所有数组记录,如果该groupId存在于不同的另一个对象中。Angular LoadAsh - 过滤不同类型的多个对象上的字段相匹配的记录

例如: 对象的通用JSON示例,每个都是记录数组。

Groups .. 
{ 
    groupId: 
    name: 
    code: 
} 

Options .. 
{ 
    groupId: 
    optionId: 
    name: 
    code: 
} 

我遇到的问题是只有在loadash中的Groups数组中存在groupId时才会拉动所有选项。

我已经尝试了一些东西,如

var results = []; 
_.forEach(Groups, function(g) { 
    var found _.find(Options, g, function(option, group) { 
     return option.groupId === group.groupId; 
    }) 
    results.push(found); 
}); 

我没有多少运气找出最好的方式来过滤这些下来。

任何话如果智慧将不胜感激,谢谢!

回答

3

像这样的事情应该工作,

var result = _.filter(Options, function(o) { 
    return _.filter(Groups, function(g) { return g.groupId == o.groupid; }).length > 0; 
}); 

其实我觉得内搜索将与find有更好的表现,因为它返回的第一场比赛,不知道虽然

var result = _.filter(Options, function(o) { 
    return _.find(Groups, { 'groupId': o.groupid }); 
}); 

希望这会有所帮助。

+0

太棒了,我知道我错过了一些简单的东西。谢谢!欢迎来到 – Mercyful

+0

,很高兴它工作:) – shakib

相关问题