1.0 KiB
1.0 KiB
title, tags, expertise, cover, firstSeen, lastUpdated
| title | tags | expertise | cover | firstSeen | lastUpdated |
|---|---|---|---|---|---|
| Filter matching and unspecified values | array | intermediate | blog_images/little-bird.jpg | 2017-12-22T09:37:36+02:00 | 2020-10-22T20:24:04+03:00 |
Filters an array of objects based on a condition while also filtering out unspecified keys.
- Use
Array.prototype.filter()to filter the array based on the predicatefnso that it returns the objects for which the condition returned a truthy value. - On the filtered array, use
Array.prototype.map()to return the new object. - Use
Array.prototype.reduce()to filter out the keys which were not supplied as thekeysargument.
const reducedFilter = (data, keys, fn) =>
data.filter(fn).map(el =>
keys.reduce((acc, key) => {
acc[key] = el[key];
return acc;
}, {})
);
const data = [
{
id: 1,
name: 'john',
age: 24
},
{
id: 2,
name: 'mike',
age: 50
}
];
reducedFilter(data, ['id', 'name'], item => item.age > 24);
// [{ id: 2, name: 'mike'}]