筛选两个阵列
问题描述:
我有以下设置阵列,筛选两个阵列
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'}]
我基本上要基于在记录阵列作为名称属性过滤登记阵列我需要注册数组中的id值。
有没有我可以用来获得所需输出的lodash库的方法的组合?
答
像这样的东西应该工作
result = _.filter(registration, x => _.some(records, {name: x.name}))
+0
虽然这是正确的答案,但我想现在要求删除。请让OP分享努力。 – Rajesh
答
你可以使用_.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>
你能告诉我们你尝试过这么远吗? – Rajesh
在您的示例结果数组中,对象已丢失'index'属性。这表明你要过滤数组并改变数值。它是否正确? – tebs1200
@ tebs1200是的,它是正确的。但我会要求你和其他人让**让OP共同努力**。 – Rajesh