Javascript 如何用字符串数组过滤对象数组
假设我有一个对象arr1的数组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=[{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},{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)
我想看看基准测试