Javascript 使用.filter筛选两个数组

Javascript 使用.filter筛选两个数组,javascript,Javascript,我正在尝试获取信息,拥有从数据库获取的所有数据,现在我需要做一些简单的事情(但不是像我xd这样的新手),我正在尝试用JS做下一个过滤器 const array1 = [{id: 'a'}, {id: '8'}, {id: 'c'}, {id: 'a'}]; const array2 = [{id: 'a'}, {id: 'c'}]; console.log(array1.filter(id => id.id == array2.id)) 它不会什么都不给我,我不明白为什么,我也尝试使用:

我正在尝试获取信息,拥有从数据库获取的所有数据,现在我需要做一些简单的事情(但不是像我xd这样的新手),我正在尝试用JS做下一个过滤器

const array1 = [{id: 'a'}, {id: '8'}, {id: 'c'}, {id: 'a'}];
const array2 = [{id: 'a'}, {id: 'c'}];
console.log(array1.filter(id => id.id == array2.id))
它不会什么都不给我,我不明白为什么,我也尝试使用:

console.log(array1.filter(id => id.id == array2.id))
我的结果是array1中的所有值,我的意思是我只希望元素具有与array1中的array2相同的Id,换句话说,我希望它返回给我两个Id=a的对象和一个Id=c的对象使用内部回调方法

const array1=[{id:'a'},{id:'8'},{id:'c'},{id:'a'}];
常量array2=[{id:'a'},{id:'c'}];
const output=array1.filter(item1=>array2.some(item2=>item2.id==item1.id))

控制台日志(输出)这将返回三个对象,因为在array1中有两个id为a的对象和一个id为c的对象

const array1=[{id:'a'},{id:'8'},{id:'c'},{id:'a'}];
常量array2=[{id:'a'},{id:'c'}];
让res=array1.filter(obj1=>array2.find(obj2=>obj1.id==obj2.id))
console.log(res)
您可以使用它来检查
array2
是否有一个具有给定
id
的元素:

const array1=[{id:'a'},{id:'8'},{id:'c'},{id:'a'}];
常量array2=[{id:'a'},{id:'c'}];
const res=array1.filter(({id})=>array2.some(e=>e.id==id));
控制台日志(res)您可以选择一个数组并对其进行筛选

这种方法使用一个循环来构建集合,另一个循环用于过滤

const
array1=[{id:'a'},{id:'8'},{id:'c'},{id:'a'}],
array2=[{id:'a'},{id:'c'}],
set2=新集合(array2.map(({id})=>id)),
result=array1.filter(({id})=>set2.has(id));
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
它不返回任何内容
-因此它返回所有内容?;)如果你想用一种不太冗长的方式来写这篇文章,我会使用lodashs intersectionBy函数,而不是原生过滤器。intersectionBy(array1,array2,'id');这是一个获得预期结果的非常好的方法。