es6中some和every方法使用简单示例

作者:tdhszsh 时间:2024-06-05 09:10:39 

文章略长,但比较简单。

es6中的数组方法some()和every()都接收一个回调函数作为参数,该回调函数又接收三个参数,分别是数组元素、数组元素的索引、调用some或every方法的数组本身。它们的区别就是:

some方法用于判断数组中是否存在某个符合判断条件的元素,判断在回调函数的函数体内完成,并由回调函数返回一个布尔值。如果回调函数在某次返回了true,则整个some方法返回true,且结束遍历。

every方法用于判断数组中是否任意一个元素都符合判断条件,判断同样是在回调函数的函数体内完成,并由回调函数返回一个布尔值。如果回调函数在某次返回了false,则整个every方法返回false,且结束遍历。

注意:some和every方法都不会改变原来的数组。

1、some方法举例如下图所示:

图1

es6中some和every方法使用简单示例

图2

es6中some和every方法使用简单示例

分析图1可知,在每次执行回调函数时,回调函数返回的布尔值都为false,因此some方法不会提前退出遍历,因此会把数组中的每一个元素都遍历一次。从图2可知,在判断第一个元素是否符合条件时,回调函数就返回了true,则整个some方法返回true,直接停止了遍历,不再判断后面的元素。

2、every方法举例:

图3

es6中some和every方法使用简单示例

图4

es6中some和every方法使用简单示例

根据前面的描述:every方法会在回调函数返回false时直接中止遍历,因此得到图3和图4的执行结果。

3、回调函数没有(主动)返回

上面的4个例子都是在回调函数主动返回布尔值,即调用了return语句的情况下分析的。下面来看如果回调函数没有主动返回布尔值时的表现:

对于some方法:

图5

es6中some和every方法使用简单示例

对于every方法:

图6

es6中some和every方法使用简单示例

分析图5和图6,可以看到在回调函数没有主动返回布尔值的情况下,some方法没有提前停止元素遍历,而every方法在第一个元素后就停止遍历了;some方法提前停止遍历的条件是return true,every方法提前停止遍历的条件时return false;也就是说回调函数默认会返回false;

4、特殊情况

下面再来看关于回调函数的一种特殊情况:

对于some方法:

图7

es6中some和every方法使用简单示例

对于every方法:

图8

es6中some和every方法使用简单示例

分析图7和图8,在回调函数同样没有return语句的情况下,执行结果为什么与第3点描述的不一样?即为什么这里能返回正确的结果?实际上,这里和第3的区别在于回调函数虽然没有return语句,但同时也没有大括号{}包含函数体。这种情况下,实际上和 {return xxx}的效果是一样的,回调函数其实是有主动返回值的。

总结一下,有三个重要的点:

(1)some和every方法提前停止遍历的前提(分别是回调函数return true和return false);

(2)回调函数没有主动返回布尔值时,默认都是返回false;

(3)回调函数的函数体只有一个语句且没有{}包含,实际上和有{}包含且有return语句是相同的。

来源:https://blog.csdn.net/tdhszsh/article/details/124428191

标签:es6,every,some
0
投稿

猜你喜欢

  • Go语法糖之‘...’ 的使用实例详解

    2024-04-26 17:16:43
  • Python接口自动化之cookie、session应用详解

    2023-02-02 11:10:35
  • Python开发编码规范

    2021-04-10 21:07:53
  • sql注入过程详解_动力节点Java学院整理

    2024-01-12 19:43:59
  • Python中GIL的使用详解

    2022-02-08 13:36:30
  • Python性能提升之延迟初始化

    2021-05-23 14:22:06
  • Go中recover与panic区别详解

    2024-05-10 13:58:22
  • C#调用Python模块的方法

    2021-04-13 15:29:10
  • Pycharm虚拟环境pip时报错:no suchoption:--bulid-dir的解决办法

    2023-02-15 20:56:11
  • Python对比校验神器deepdiff库使用详解

    2023-05-14 11:05:35
  • Python基于paramunittest模块实现excl参数化

    2023-12-27 00:29:02
  • 了解WEB页面工具语言XML(三)支持工具

    2008-09-05 17:18:00
  • ASP向Excel导数据(图片)终结版 ASP操作Excel

    2011-03-25 10:48:00
  • Python的内置数据类型中的数字

    2023-12-29 19:36:37
  • SQL中位数函数实例

    2024-01-25 17:21:55
  • 利用 Python 实现多任务进程

    2023-12-19 02:53:52
  • Python配置文件解析模块ConfigParser使用实例

    2023-10-19 09:10:19
  • 人脸检测实战终极之OpenCV+Python实现人脸对齐

    2023-10-01 02:03:07
  • IE window对象介绍

    2008-05-21 18:47:00
  • python获取百度热榜链接的实例方法

    2022-10-02 23:10:01
  • asp之家 网络编程 m.aspxhome.com