文档章节

forEach 中跳过本次循环和终止循环

dkvirus
 dkvirus
发布于 2017/09/01 09:53
字数 565
阅读 103
收藏 0
点赞 0
评论 0

使用 forEach 方法来遍历数组是最常使用的一种方式,但在实际开发中通常通过会有跳过本次循环和终止循环的情形,首先想到的应该是使用 continue 和 break 关键字,但无奈这两个关键字在 forEach 中都无法使用(写了会报错错误语法),此时就该寻找其它解决方法。

1. forEach 中跳过本次循环

const arr = [1, 2, 3, 4, 5];

arr.forEach(function (item) {
	console.log(item);
});
// result:
// 1
// 2
// 3
// 4
// 5

使用 return 语句实现 continue 关键字效果。

const arr = [1, 2, 3, 4, 5];

arr.forEach(function (item) {
	if (item === 3) {
		return;
	}
	console.log(item);
});
// result:
// 1
// 2
// 4
// 5

关于 returnreturn truereturn false 的区别。return 可以看成是 return undefined,此时 returnreturn false 的写法都可以看成是返回一个 false 的结果(undefined 转换为布尔值就是 false),只有 return true 的写法时返回一个 true 的结果。了解这一点对于区分 forEachsomeevery 至关重要。

forEach 方法中,不管 return 返回的结果是 true 还是 falseforEach 都会跳过本次循环执行下一次循环。这就导致在 forEach 中无法直接终止循环(定义计数变量除外)。而 someevery 方法可以终止循环。

2. some() 实现遍历数组

some 方法中,return 返回的结果为 true 表示终止循环,return 返回结果为 false 表示跳过本次循环。

  • return 返回结果为 true 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.some(function (item) {
    	console.log(item);
    	return item === 3;
    });
    // result:
    // 1
    // 2
    // 3
    
  • return 返回结果为 false 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.some(function (item) {
    	if (item === 2) {
    		return;
    	}
    	console.log(item);
    });
    // result:
    // 1
    // 3
    // 4
    // 5
    

3. every() 实现遍历数组

some 方法恰好相反,在 every 方法中,return 返回的结果为 false 表示终止循环,return 返回结果为 true 表示跳过本次循环。

  • return 返回结果为 false 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.every(function (item) {
    	console.log(item);
    	return item !== 3;
    });
    // result:
    // 1
    // 2
    // 3
    
  • return 返回结果为 true 示例代码:

    const arr = [1, 2, 3, 4, 5];
    
    arr.every(function (item) {
    	if (item === 2) {
    		return true;        // 这个地方如果换成 return 会有不一样的结果。
    	}
    	console.log(item);
    	return item !== 5;
    });
    // result:
    // 1
    // 3
    // 4
    // 5
    

© 著作权归作者所有

共有 人打赏支持
dkvirus
粉丝 14
博文 102
码字总数 99310
作品 0
六安
程序员
java 中 break continue label的使用

java中 label 配合 break continue 使用的其实是比较少的. 这种做法在业务代码中比较少见. 在读其他库的代码时可能会遇到该语法的使用. 下面对该语法做简短解释. break label 用来终止循环体...

yftx_
03/23
0
0
ES6新特性for...of(2018-05-22)

for...of 一种用于遍历数据结构的方法。它可遍历的对象包括数组,对象,字符串,set和map结构等具有iterator 接口的数据结构。 传统遍历方式与for...of优缺 1、for 循环 2、forEach 3、for.....

a小磊_
05/22
0
0
PHP 04 循环结构

◆何时需要循环结构? • 循环输出一百次你好; • 将字符输出指定次数; ◆while 循环 ◆使用while 循环-1 • 打印50“次好好学习,天天向上” • 重复操作,可以使用while循环 • 使用whi...

Annie可馨
2016/11/05
5
0
Java——流程控制与数组

一:顺序结构 从上到下顺序执行,中间没有任何判断和跳转。 二:分支结构: 1、if条件语句 if语句使用布尔表达式或布尔值作为分支结构来进行分支控制。 第一种形式: if(Logic Expression) {...

李可爱34
2016/04/07
37
0
PHP基础巩固(一)

一、条件控制语句switch 基本语法为: 总结:switch语句相对于if...else语句来说,在某些情况下,书写更为清晰、简洁。 二、while、do...while循环语句 while和do...while类似,都是不确定循...

高能狂犬
2016/08/18
10
0
Velocity入门指南——第七章 循环指令

Velocity模板支持各种集合类型的迭代。 Object[] Velocity包装数据对象到迭代对象中,可以将其当做固定长度的List,可以调用size()、isEmpty()和get(int)。 java.util.Collection Velocity将...

Leech
2015/12/04
2.8K
0
学习笔记(10月25日)--python的if、while、for语法

二周三次课(10月25日) 1.学习python特殊的缩进和语法 python的缩进和冒号 python之所以如此简单,归功于他的缩进机制,严格的缩进机制使得代码非常整齐规范,赏心悦目,提高了可读性,在一...

wanyang_wanyang
07/03
0
0
javascript遍历总结

for in 循环 最原始遍历,没什么可说的。 注意的地方:js没有块级作用域,如果for (var i=1;i<10;i++)这样定义的i变量的作用域会影响函数内部,ES6的let定义变量可以解决这个问题。 forEach ...

Kurset
2017/08/13
0
0
22:python中的循环控制语句

循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句: 22.1 break语句 Pythonbreak语句,就像在C语言中,打破了最小封闭for或while循环。 break语句用来终止循环语句,即循环条...

下家山
2017/07/19
0
0
【java基础】流程控制和数组

1、在处理if...else语句时候,总是考虑先处理包含范围更小的情况 2、if中条件执行体(代码块)有多行的时候,需加入大括号,当if下面只有一行的时候,可以不用加入大括号 3、break终止循环,...

zlt995768025
2017/12/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

about git flow

  昨天元芳做了git分支管理规范的分享,为了拓展大家关于git分支的认知,这里我特意再分享这两个关于git flow的链接,大家可以看一下。 Git 工作流程 Git分支管理策略   git flow本质上是...

qwfys
今天
2
0
Linux系统日志文件

/var/log/messages linux系统总日志 /etc/logrotate.conf 日志切割配置文件 参考https://my.oschina.net/u/2000675/blog/908189 dmesg命令 dmesg’命令显示linux内核的环形缓冲区信息,我们可...

chencheng-linux
今天
1
0
MacOS下给树莓派安装Raspbian系统

下载镜像 前往 树莓派官网 下载镜像。 点击 最新版Raspbian 下载最新版镜像。 下载后请,通过 访达 双击解压,或通过 unzip 命令解压。 检查下载的文件 ls -lh -rw-r--r-- 1 dingdayu s...

dingdayu
今天
1
0
spring boot使用通用mapper(tk.mapper) ,id自增和回显等问题

最近项目使用到tk.mapper设置id自增,数据库是mysql。在使用通用mapper主键生成过程中有一些问题,在总结一下。 1、UUID生成方式-字符串主键 在主键上增加注解 @Id @GeneratedValue...

北岩
今天
2
0
告警系统邮件引擎、运行告警系统

告警系统邮件引擎 cd mail vim mail.py #!/usr/bin/env python#-*- coding: UTF-8 -*-import os,sysreload(sys)sys.setdefaultencoding('utf8')import getoptimport smtplibfr......

Zhouliang6
今天
1
0
Java工具类—随机数

Java中常用的生成随机数有Math.random()方法及java.util.Random类.但他们生成的随机数都是伪随机的. Math.radom()方法 在jdk1.8的Math类中可以看到,Math.random()方法实际上就是调用Random类...

PrivateO2
今天
2
0
关于java内存模型、并发编程的好文

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在...

DannyCoder
昨天
1
0
dubbo @Reference retries 重试次数 一个坑

在代码一中设置 成retries=0,也就是调用超时不用重试,结果DEBUG的时候总是重试,不是0吗,0就不用重试啊。为什么还是调用了多次呢? 结果在网上看到 这篇文章才明白 https://www.cnblogs....

奋斗的小牛
昨天
2
0
数据结构与算法3

要抓紧喽~~~~~~~放羊的孩纸回来喽 LowArray类和LowArrayApp类 程序将一个普通的Java数组封装在LowArray类中。类中的数组隐藏了起来,它是私有的,所以只有类自己的方法才能访问他。 LowArray...

沉迷于编程的小菜菜
昨天
1
0
spring boot应用测试框架介绍

一、spring boot应用测试存在的问题 官方提供的测试框架spring-boot-test-starter,虽然提供了很多功能(junit、spring test、assertj、hamcrest、mockito、jsonassert、jsonpath),但是在数...

yangjianzhou
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部