2019-05-29
描述
基于特定的条件过滤出数组中的对象,并且过滤出这些对象中没有指定的 keys。
提示
- 基于提供的
fn
对数组使用Array.prototype.filter()
进行过滤,当在fn
的条件中对象返回真值时,我们就返回这个对象 - 在过滤好的数组中,使用
Array.prototype.map()
来返回一个新的对象,该对象使用Array.prototype.reduce()
来过滤出keys
参数中出没有提供的 keys
代码
const reducedFilter = (data, keys, fn) =>
data.filter(fn).map(el =>
keys.reduce((acc, key) => {
acc[key] = el[key];
return acc;
}, {})
);
示例
获取年龄大于 24 岁的对象,且只包含 id
和 name
:
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'}]