Lodash 中的 filter() 函数介绍和使用
给定一个数组 arr
, 洛达什 filter()
函数 返回一个包含所有元素的数组 arr
函数返回一个 真 值。
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
_.filter(arr, isEven); // [2, 4, 6, 8]
function isEven(v) { return v % 2 === 0; }
您传递给的函数 filter()
称为 谓词 。 如果谓词返回一个 虚假 值(如 null
, undefined
, 0
, 或者 ''
),Lodash 过滤掉这个值。
const arr = [null, false, 0, 'hello'];
_.filter(arr, v => v); // ['hello']
关于对象数组
这 filter()
函数有几个方便的速记来处理对象数组。 如果您传递的是字符串谓词而不是函数,Lodash 将根据该属性是真还是假来过滤。
const arr = [
{},
{ hello: null },
{ hello: false },
{ hello: 0 },
{ hello: 'world' }
];
_.filter(arr, 'hello'); // [{ hello: 'world' }]
如果你的谓词是一个对象 obj
对象 与给定谓词匹配的 。换句话说,Lodash 将匹配具有相同值的对象 obj
对于所有属性 obj
。
const arr = [
{ firstName: 'Will', lastName: 'Riker', rank: 'Commander' },
{ firstName: 'Beverly', lastName: 'Crusher', rank: 'Commander' },
{ firstName: 'Wesley', lastName: 'Crusher', rank: 'Ensign' }
];
// ['Riker', 'Crusher']
_.filter(arr, { rank: 'Commander' }).map(v => v.lastName);
// ['Beverly', 'Wesley']
_.filter(arr, { lastName: 'Crusher' }).map(v => v.firstName);
// ['Beverly']
_.filter(arr, { lastName: 'Crusher', rank: 'Commander' }).map(v => v.firstName);
在对象上
这 _.filter()
函数也可以接受一个对象作为参数,而不是一个数组。 打电话 _.filter(obj, fn)
行为类似于 _.filter(Object.values(obj), fn)
。
const obj = {
one: 1,
two: 2,
three: 3,
four: 4
};
_.filter(obj, v => v % 2 === 0); // [2, 4]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Lodash 的 map() 函数介绍
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论