Lodash 中的 filter() 函数介绍和使用

发布于 2022-07-06 22:07:24 字数 2372 浏览 1019 评论 0

给定一个数组 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

半葬歌

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

遂心如意

文章 0 评论 0

5513090242

文章 0 评论 0

巷雨优美回忆

文章 0 评论 0

junpengz2000

文章 0 评论 0

13郎

文章 0 评论 0

qq_xU4RDg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文