Javascript 如何用字符串数组过滤对象数组

Javascript 如何用字符串数组过滤对象数组,javascript,reactjs,Javascript,Reactjs,假设我有一个对象arr1的数组 arr1=[{name:“name1”,id:1},{name:“name2”,id:1},{name:“name3”,id:4},{name:“name3”,id:3},{name:“name1”,id:5}] 我想用arrayarr2=[“name1”,“name3”] 我尝试使用过滤器然后。一些。但是没有得到正确的数据 必需的arr3=[{name:“name1”,id:1},{name:“name3”,id:4},{name:“name3”,id:3},{

假设我有一个对象arr1的数组
arr1=[{name:“name1”,id:1},{name:“name2”,id:1},{name:“name3”,id:4},{name:“name3”,id:3},{name:“name1”,id:5}]

我想用array
arr2=[“name1”,“name3”]

我尝试使用过滤器然后。一些。但是没有得到正确的数据

必需的
arr3=[{name:“name1”,id:1},{name:“name3”,id:4},{name:“name3”,id:3},{name:“name1”,id:5}]

试试这个:

const res = arr1.filter(item => arr2.includes(item.name));

首先,我将从
arr2
中创建一个
Set

然后我将使用
filter
方法仅选择集合中存在的元素

arr1=[
{name:'name1',id:1},
{name:'name2',id:1},
{name:'name3',id:4},
{name:'name3',id:3},
{name:'name1',id:5},
];
arr2=['name1','name3'];
arr3=[
{name:'name1',id:1},
{name:'name3',id:4},
{name:'name3',id:3},
{name:'name1',id:5},
];
常数s=新集合(arr2);
console.log(arr1.filter(a=>s.has(a.name))
您可以与一起使用以获得更好的性能

const arr1=[{name:“name1”,id:1},{name:“name2”,id:1},{name:“name3”,id:4},{name:“name3”,id:3},{name:“name1”,id:5}];
设集合=新集合([“name1”,“name3]”);
设res=arr1.filter(({name})=>set.has(name));

控制台日志(res)检查这个答案。arr1.filter(e=>arr2.indexOf(e.name)!=-1)我想它一定是
.includes(item.name)
我想看看基准测试