2017-07-07 44 views
0

我有這兩個數組,並有一個簡單的方法來過濾來自數據數組和數據2數組的匹配項。但它應該返回兩個項目時返回空數組。我究竟做錯了什麼?過濾兩個數組返回空白數組

var data = [{ teamId: 74, teamName: 'Blah' }, 
 
{ teamId: 94, teamName: 'Panhi' }, 
 
{ teamId: 30, teamName: 'Writer' }, 
 
{ teamId: 121, teamName: 'People' }, 
 
{ teamId: 85, teamName: 'Perf' }, 
 
{ teamId: 31, teamName: 'Tell' }, 
 
{ teamId: 32, teamName: 'Gall' }, 
 
{ teamId: 137, teamName: 'Bird' }, 
 
{ teamId: 79, teamName: 'Blue' }, 
 
{ teamId: 119, teamName: 'Red' }, 
 
{ teamId: 66, teamName: 'Pluto' }, 
 
{ teamId: 56, teamName: 'PolarBear' }, 
 
{ teamId: 33, teamName: 'Praxis' }, 
 
{ teamId: 62, teamName: 'Purple' } 
 
]; 
 

 
var data2 = [ { id: 1, reId: 52, teamId: 94 }, 
 
    { id: 2, reId: 52, teamId: 32 } ]; 
 

 
var found = data.filter(i => i.teamId === data2.teamId); 
 
console.log(found);

+1

數據2是陣列,數據2不包含teamId,所以條件每次失敗,並返回空數組 –

+0

它確實包含teamId ..即時通訊混淆.. – Shayuh

+0

可以控制檯登錄數據2 .teamId, data2是包含teamId的對象數組,如data2 [0] .teamId –

回答

1

data2array,你應該遍歷它與它的每個元素進行篩選。

參考下面的例子:

var data = [{ teamId: 74, teamName: 'Blah' }, 
 
{ teamId: 94, teamName: 'Panhi' }, 
 
{ teamId: 30, teamName: 'Writer' }, 
 
{ teamId: 121, teamName: 'People' }, 
 
{ teamId: 85, teamName: 'Perf' }, 
 
{ teamId: 31, teamName: 'Tell' }, 
 
{ teamId: 32, teamName: 'Gall' }, 
 
{ teamId: 137, teamName: 'Bird' }, 
 
{ teamId: 79, teamName: 'Blue' }, 
 
{ teamId: 119, teamName: 'Red' }, 
 
{ teamId: 66, teamName: 'Pluto' }, 
 
{ teamId: 56, teamName: 'PolarBear' }, 
 
{ teamId: 33, teamName: 'Praxis' }, 
 
{ teamId: 62, teamName: 'Purple' } 
 
]; 
 

 
var data2 = [ { id: 1, reId: 52, teamId: 94 }, 
 
    { id: 2, reId: 52, teamId: 32 } ]; 
 

 
var found = data.filter(i => i.teamId === data2[0].teamId || i.teamId === data2[1].teamId); 
 
console.log(found);

+0

哦,我的天哪。我有想法,它會通過兩個陣列一個一個地過濾.. – Shayuh

+0

@ Y.Hewa你必須通過手動循環。根本沒有'data2.teamId'。 :-) – Pengyy

1

動態解決您的問題。

var data = [{ teamId: 74, teamName: 'Blah' }, 
 
{ teamId: 94, teamName: 'Panhi' }, 
 
{ teamId: 30, teamName: 'Writer' }, 
 
{ teamId: 121, teamName: 'People' }, 
 
{ teamId: 85, teamName: 'Perf' }, 
 
{ teamId: 31, teamName: 'Tell' }, 
 
{ teamId: 32, teamName: 'Gall' }, 
 
{ teamId: 137, teamName: 'Bird' }, 
 
{ teamId: 79, teamName: 'Blue' }, 
 
{ teamId: 119, teamName: 'Red' }, 
 
{ teamId: 66, teamName: 'Pluto' }, 
 
{ teamId: 56, teamName: 'PolarBear' }, 
 
{ teamId: 33, teamName: 'Praxis' }, 
 
{ teamId: 62, teamName: 'Purple' } 
 
]; 
 

 
var data2 = [ { id: 1, reId: 52, teamId: 94 }, 
 
    { id: 2, reId: 52, teamId: 32 } ]; 
 

 
var found = []; 
 

 
found = data.filter(function(i) { 
 
    return data2.find(d => d.teamId === i.teamId); 
 
}); 
 
console.log(found);