耀极客论坛

 找回密码
 立即注册
查看: 526|回复: 0

JavaScript中find()和 filter()方法的区别小结

[复制链接]

193

主题

176

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2022-5-7 00:49:05 | 显示全部楼层 |阅读模式
  js中find和filter方法大家在工作中会经常遇到,那么他们有什么区别呢?这篇文章主要给大家介绍了关于JavaScript中find()和 filter()方法区别的相关资料,需要的朋友可以参考下

前言
  JavaScript 在 ES6 上有很多数组方法,每种方法都有独特的用途和好处。
  在开发应用程序时,大多使用数组方法来获取特定的值列表并获取单个或多个匹配项。
  在列出这两种方法的区别之前,我们先来一一了解这些方法。

JavaScript find() 方法
  ES6 find() 方法返回通过测试函数的第一个元素的值。如果没有值满足测试函数,则返回 undefined。
  语法
  以下语法中使用的箭头函数。
  1. find((element) => { /* ... */ } )
  2. find((element, index) => { /* ... */ } )
  3. find((element, index, array) => { /* ... */ } )
复制代码
  我们有一个包含名称 age 和 id 属性的用户对象列表,如下所示:
  1. let users = [{
  2.     id:1,
  3.     name: 'John',
  4.     age: 22
  5. }, {
  6.     id:2,
  7.     name: 'Tom',
  8.     age: 22
  9. }, {
  10.     id:3,
  11.     name: 'Balaji',
  12.     age: 24
  13. }];
复制代码
  以下代码使用 find() 方法查找年龄大于 23 的第一个用户。
  1. console.log(users.find(user => user.age > 23));
  2. //console
  3. //{ id: 3, name: 'Balaji', age:24}
复制代码
  现在我们要找到第一个年龄为 22 的用户
  1. console.log(users.find(user => user.age === 22));
  2. //console
  3. //{ id: 1, name: 'John', age:22}
复制代码
  假设没有找到匹配意味着它返回 undefined
  1. console.log(users.find(user => user.age === 25));
  2. //console
  3. //undefined
复制代码
JavaScript filter() 方法
  filter() 方法创建一个包含所有通过测试函数的元素的新数组。如果没有元素满足测试函数,则返回一个空数组。
  语法
  1. filter((element) => { /* ... */ } )
  2. filter((element, index) => { /* ... */ } )
  3. filter((element, index, array) => { /* ... */ } )
复制代码
  我们将使用相同的用户数组和测试函数作为过滤器示例。
  以下代码使用 filter() 方法查找年龄大于 23 的第一个用户。
  1. console.log(users.filter(user => user.age > 23));
  2. //console
  3. 现在我们要过滤年龄为 22 岁的用户//[{ id: 3, name: 'Balaji', age:24}]
复制代码
  现在我们要过滤年龄为 22 岁的用户
  1. console.log(users.filter(user => user.age === 22));
  2. //console
  3. //[{ id: 1, name: 'John', age:22},{ id: 2, name: 'Tom', age:22}]
复制代码
  假设没有找到匹配意味着它返回一个空数组
  1. console.log(users.filter(user => user.age === 25));
  2. //console
  3. //[]
复制代码
find() 和 filter() 的区别与共点
  共点
  高阶函数:这两个函数都是高阶函数。
  区别
  1、通过一个测试功能
  find() 返回第一个元素。
  filter() 返回一个包含所有通过测试函数的元素的新数组。
  2、如果没有值满足测试函数
  find() 返回未定义;
  filter() 返回一个空数组;

直接上代码
  1. let arr = [
  2.   {
  3.     name: 'Rick',
  4.     age: 60
  5.   },
  6.   {
  7.     name: 'Rick',
  8.     age: 70
  9.   },
  10.   {
  11.     name: 'Morty',
  12.     age: 14
  13.   }
  14. ]
  15. let findResult = arr.find(i => i.name === 'Rick')
  16. let filterResult = arr.filter(i => i.name === 'Rick')
  17. console.log(arr);
  18. /*  输出结果
  19.   [
  20.     {
  21.       name: "Rick",
  22.       age: 60
  23.     },
  24.     {
  25.       name: "Rick",
  26.       age: 70
  27.     },
  28.     {
  29.       name: "Morty",
  30.       age: 14
  31.     }
  32.   ]
  33. */
  34. console.log(findResult);   // {name: "Rick", age: 60}
  35. console.log(filterResult);  // [{name: "Rick", age: 60}, {name: "Rick", age: 70}]
复制代码
  根据以上代码输出结果,可以发现 find 和 filter 都不改变原数组

总结
  到此这篇关于JavaScript中find()和filter()方法的区别小结的文章就介绍到这了,更多相关js find() 和 filter() 方法的区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|耀极客论坛 ( 粤ICP备2022052845号-2 )|网站地图

GMT+8, 2022-11-28 20:06 , Processed in 0.069837 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表