javascript - lodash Left 连接两个对象
问题描述
var data = [{LearnerId:6362, ColName:AETY10, Value:9, Subject:E+, LookupId:37}]
var subs = [{LookupId:4, Name:Art},{LookupId:37, Name:Maths}]
var merged = _.merge(_.keyBy(data,'LookupId'), _.keyBy(subs, 'LookupId'));
var mapped = _.values(merged);
但这不会将数组作为左连接返回,所以我希望它显示为:
var mapped = [{LearnerId:6362, ColName:AETY10, Value:9, Subject:E+, LookupId:37,Name:Maths}]
这在 Lodash 中可能吗?
解决方案
代替lodash
,您可以采用一个函数,该函数使用 for 所需键执行外连接,Map
并返回一个带有新对象的数组,该对象具有附加属性。
var outerjoin = (data, outer, key) => {
const lookup = new Map(subs.map(o => [o[key], o]));
return data.map(o => ({ ...o, ...lookup.get(o[key]) }));
},
data = [{ LearnerId: 6362, ColName:'AETY10', Value: 9, Subject: 'E+', LookupId: 37 }],
subs = [{ LookupId: 4, Name: 'Art' }, { LookupId: 37, Name: 'Maths' }],
merged = outerjoin(data, subs, 'LookupId');
console.log(merged);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- robotframework - 在机器人框架中设置 Desired_capabilities 时出现“TypeError:字符串索引必须是整数”错误
- visual-studio-2015 - Nuget 包还原失败,访问路径“..\packages\Microsoft.Owin.Security.Jwt\4.0.0”被拒绝
- python - Python修复导入键盘模块时打印出的奇怪东西
- jupyter-notebook - 获取 jupyter notebook R (irkernel) 中当前文件的路径
- excel - Excel SUM:从中间到滚动终点的列公式
- hibernate - Spring hibernate liquibase 集成测试失败
- perl - 如何用单个数字替换字符串中以“_”分隔的数字序列
- java - 我们如何在 Hibernate (HBM) 中表示一个惰性多对一关系,同时允许在急切模式下引用同一个类?
- ruby - 是否可以在一个字段中接收从 Faker 生成的另一个字段的值?
- java - 查询用户输入,然后存储在数据库中,然后在页面上显示