过滤两个数组将返回空数组

时间:2017-07-07 06:02:37

标签: javascript

我有这两个数组,并且有一个简单的方法来过滤数据数组和data2数组中的匹配项。但是当它应该返回两个项时它返回空数组。我做错了什么?



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);




2 个答案:

答案 0 :(得分:1)

data2是一个array,你应该遍历它以过滤每个元素。

参考以下示例:



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);




答案 1 :(得分: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);

相关问题