我有以下数组,
var records = [{ 'id': 'ee31ee6a-7f95-49fb-a02f-2a9ef36c2f8b',
'name': 'Test', 'type': 'user' },
{ 'id': 'ee31ee6a-7f95-49fb-a02f-2a9ef36c2f8b',
'name': '9300731e-3c97-4719-8dc2-fcf0a29fd770', 'type': 'register' },
{ 'id': 'ee31ee6a-7f95-49fb-a02f-2a9ef36c2f8b',
'name': '9300731e-3c97-4719-8dc2-fcf0a29fd772', 'type': 'register' },
];
var registration = [
{ 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd770', 'id': '123', 'index': '9300731e-3c97-4719-8dc2-fcf0a29fd770'},
{ 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd772', 'id': '456', 'index': '9300731e-3c97-4719-8dc2-fcf0a29fd770'},
{ 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd771', 'id': '789' 'index': '9300731e-3c97-4719-8dc2-fcf0a29fd776'}];
并想要以下输出
result = [
{ 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd770', 'id': '123'},
{ 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd772', 'id': '456'}]
我基本上希望根据记录数组中的name属性过滤注册数组,因为我需要注册数组中的id值。
我可以使用lodash库中的方法组合来获得所需的输出吗?
答案 0 :(得分:1)
您可以使用_.intersectionBy
。
var records = [{ 'id': 'ee31ee6a-7f95-49fb-a02f-2a9ef36c2f8b', 'name': 'Test', 'type': 'user' }, { 'id': 'ee31ee6a-7f95-49fb-a02f-2a9ef36c2f8b', 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd770', 'type': 'register' }, { 'id': 'ee31ee6a-7f95-49fb-a02f-2a9ef36c2f8b', 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd772', 'type': 'register' }],
registration = [{ 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd770', 'id': '123', 'index': '9300731e-3c97-4719-8dc2-fcf0a29fd770'}, { 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd772', 'id': '456', 'index': '9300731e-3c97-4719-8dc2-fcf0a29fd770'}, { 'name': '9300731e-3c97-4719-8dc2-fcf0a29fd771', 'id': '789', 'index': '9300731e-3c97-4719-8dc2-fcf0a29fd776'}],
result = _.intersectionBy(registration, records, "name");
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
答案 1 :(得分:0)
这样的事情应该有效
result = _.filter(registration, x => _.some(records, {name: x.name}))