Skip to main content

reducedFilter

JS TODO

Filter 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 predicate fn so 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 using Array.prototype.reduce() to filter out the keys which were not supplied as the keys argument.

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'}]