我有两个表/对象列表,它们通过ID(用SQL术语,外键)连接。是否有一些优雅的方式对它们进行转换,所以我最终在“父”的属性中引用了“子对象”?
示例:
Table1: Id, Name
Table2: Id, Name, ForeignId (referencing Table1.Id)
预期结果:
Table2Object.Table1Object containing the correct object form Table1
我知道我可以通过首先按照Id(纯粹是为了表演)对孩子进行分组,然后用foreach覆盖父母来做到这一点,但这似乎相当......对我来说不好看。
答案 0 :(得分:1)
与下划线的关系?有趣=)
您可以使用_.map()
& _.filter()
为此:
var t = [
{id: 1, Name: 't1'},
{id: 2, Name: 't2'},
{id: 3, Name: 't3'},
{id: 4, Name: 't4'}
];
var f = [
{id: 1, Name: 'f1', ForeignId:1},
{id: 2, Name: 'f2', ForeignId:1},
{id: 3, Name: 'f3', ForeignId:2},
{id: 4, Name: 'f4', ForeignId:3}
];
var res = _.map(t, function(p){
var j = _.filter(f, function(n){
return p.id === n.ForeignId;
});
if(j && j.length) p.f = j;
return p;
});