我有点进入函数式编程。我的问题是关于如何映射来自嵌套数据的信息。Lodash - 使用嵌套对象信息从数组中扩展对象
我有一系列公司。
[
{
_id: 123,
name: "Company"
},
{
_id: 789,
name: "Company"
}
];
我有一组团队。
[
{
_id: 555,
name: "Team name A",
companyId: 123
},
{
_id: 666,
name: "Team name B",
companyId: 123
},
{
_id: 777,
name: "Team name C",
companyId: 789
}
];
我想将团队纳入公司对象为每个公司。该预期的结果将是:
[
{
_id: 123,
name: "Company",
teams: [
{
_id: 555,
name: "Team name A",
companyId: 123
},
{
_id: 666,
name: "Team name B",
companyId: 123
}
]
},
{
_id: 789,
name: "Company",
teams: [
{
_id: 777,
name: "Team name A",
companyId: 789
}
]
}
];
我的解决方案一直是这样做的几个步骤:
teamsGroupedByCompany = _.group(teams, 'companyId');
var findTeamsByCompanyId = function(groupedTeams, companyId){
return _.chain(groupedTeams)
.find(function(value, key){
return companyId == key;
})
.flatten()
.defaults([])
.value();
}
_.map(companies, function(company){
company.team = findTeamsByCompanyId(teamsGroupedByCompany, company._id);
})
能把它的链接的方式来完成,或者我必须做出高阶函数来处理这些问题?目前我使用lodash。
这里是jsbin https://jsbin.com/buqiji/edit?js,console