How To Filter An Array Of Objects With Names From Another Array Of Objects
I'm new to Javascript and I'm struggling with how to use the map, filter, find and other functions. I have two arrays of objects, and I wanted to filter the first one with the seco
Solution 1:
something like this?
const filteredUsers = users.filter(user=>filter.find(x=>(x.name==user.name)&&(x.age==user.age)&&(x.gender==user.gender));
what would be better is to give everyone a unique id.
const filteredUsers = users.filter(user=>filter.find(x=>(x.id==user.id));
Solution 2:
"What is the best way" is a matter of opinion, but if you would have a large filter object, then it makes sense to first convert it to a temporary set:
function filterBy(users, filter) {
let set = new Set(filter.map(({name}) => name)); // for faster lookup
return users.filter(({name}) => set.has(name));
}
// demo
const users = [{name: 'Anna',age: 22,gender: 'F',},{name: 'John',age: 25,gender: 'M',},{name: 'Mary',age: 27,gender: 'F',},{name: 'Joe',age: 30,gender: 'M',},];
const filter = [{name: 'Anna',},{name: 'John',}];
console.log(filterBy(users, filter));
Solution 3:
const users = [{
name: 'Anna',
age: 22,
gender: 'F',
},
{
name: 'John',
age: 25,
gender: 'M',
},
{
name: 'Mary',
age: 27,
gender: 'F',
},
{
name: 'Joe',
age: 30,
gender: 'M',
},
];
const filter = [{
name: 'Anna',
},
{
name: 'John',
},
];
const result = users.filter(value => {
const isExist = filter.findIndex(data => data.name === value.name);
return isExist === -1 ? false: true;
});
console.log(result)
Post a Comment for "How To Filter An Array Of Objects With Names From Another Array Of Objects"