2016-11-07 63 views
1

我有以下設置陣列,篩選兩個陣列

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庫的方法的組合?

+2

你能告訴我們你嘗試過這麼遠嗎? – Rajesh

+0

在您的示例結果數組中,對象已丟失'index'屬性。這表明你要過濾數組並改變數值。它是否正確? – tebs1200

+0

@ tebs1200是的,它是正確的。但我會要求你和其他人讓**讓OP共同努力**。 – Rajesh

回答

0

像這樣的東西應該工作

result = _.filter(registration, x => _.some(records, {name: x.name})) 
+0

雖然這是正確的答案,但我想現在要求刪除。請讓OP分享努力。 – Rajesh

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>