JavaScript中如何终止forEach循环&跳出for(双层)循环?
在JavaScript中,
forEach方法是用于遍历数组的,通常没有直接终止循环的机制。然而,我们可以使用一些技巧来模拟终止forEach循环。以下是几种常见的方法
1.使用return语句:在forEach回调函数内部使用return语句可以实现类似终止循环的效果。当需要终止循环时,可以在回调函数中返回false或者任意其他特定值。
const arr = [1, 2, 3, 4, 5, 6, 7];
let terminate = false;
arr.forEach((element) => {
if (terminate) {
return;
}
console.log(element);
if (element === 3) {
terminate = true; // 终止循环
}
});
2.使用异常处理:通过抛出一个自定义的异常,可以终止forEach循环。在捕获到该异常后,程序会跳出forEach循环。
const arr = [1, 2, 3, 4, 5, 6, 7];
try {
arr.forEach((element) => {
console.log(element);
if (element === 3) {
throw 'TerminateException'; // 抛出自定义异常
}
});
} catch (e) {
if (e !== 'TerminateException') {
throw e; // 抛出其他异常
}
}
3.使用for...of循环:如果只需要在特定条件下终止循环,可以考虑使用for...of循环代替forEach循环。for...of循环支持break语句来终止循环。
const arr = [1, 2, 3, 4, 5, 6, 7];
for (const item of arr) {
console.log(item);
if (item === 4) {
break; // 终止循环
}
}
4.将数组长度设置成0
const array = [ 1, 2, 3, 4, 5, 6, 7 ]
array.forEach((item) => {
if (item >= 4) {
console.log(item) // 输出:4
array.length = 0
}
})
5.建议使用for循环和some方法
const arr = [1, 2, 3, 4, 5, 6, 7]
for (let i = 0, len = arr.length; i < len; i++) {
if (arr[ i ] >= 4) {
console.log(arr[ i ]) // 4
break // return
}
}
6.双层for循环跳出循环
// 双层for循环跳出循环 =>
for (let index = 0; index < 10; index++) {
console.log('--------', '第一个循环');
let flag = false;
for (let ind = 0; ind < 10; ind++) {
console.log('--------', '第二个循环', index, ind);
if(index * ind > 20) {
console.log('--------', '跳出循环');
flag = true;
break;
}
}
if(flag) {
break
}
}
outer: for (let index = 0; index < 10; index++) {
console.log('--------', '第一个循环');
for (let ind = 0; ind < 10; ind++) {
console.log('--------', '第二个循环', index, ind);
if(index * ind > 20) {
console.log('--------', '跳出循环');
break outer; // 这个是跳出整个循环
// return 这个是终止循环
}
}
}
感谢大大关注!!!
JavaScript中如何终止forEach循环&跳出for(双层)循环?的更多相关文章
- JavaScript中如何中断forEach循环
先来看下forEach的实现 // Production steps of ECMA-262, Edition 5, 15.4.4.18// Reference: http://es5.github. ...
- JavaScript中Map和ForEach的区别
译者按: 惯用Haskell的我更爱map. 原文: JavaScript — Map vs. ForEach - What’s the difference between Map and ForE ...
- JavaScript 中 map、foreach、reduce 间的区别
一直对map.foreach.reduce这些函数很是生疏,今天看underscorejs时好好研究了一下,一研究我就更懵了,这不是一样嘛,都是遍历,所以我就去知乎找了一下,整理出了比较好的几个说法. ...
- 浅谈JavaScript中的Function引用类型
引言 在JavaScript中最有意思的就是函数了,这一切的根源在于函数实际上是一个对象.每一个函数都是Function类型的实例,而且都和其他引用类型的实例一样具有属性和方法.函数作为一个对象,因此 ...
- 理解 JavaScript 中的 for…of 循环
什么是 for…of 循环 for...of 语句创建一个循环来迭代可迭代的对象.在 ES6 中引入的 for...of 循环,以替代 for...in 和 forEach() ,并支持新的迭代协议. ...
- 深入了解 JavaScript 中的 for 循环
在ECMAScript5(简称 ES5)中,有三种 for 循环,分别是: 简单for循环 for-in forEach 在2015年6月份发布的ECMAScript6(简称 ES6)中,新增了一种循 ...
- Javascript中while和do-while循环用法详解
while循环 while 语句与 if 语句相似,都有条件来控制语句(或语句块)的执行,其语言结构基本相同:while(conditions){ statements;} while 语句与 ...
- 深入了解JavaScript中的for循环
在ECMAScript5中,有三种for循环,分别是: 简单for循环 for-in forEach 在ES6中,新增了一种循环 for-of 简单for循环 const arr = [1, 2, 3 ...
- Javascript/Jquery 中each() 和forEach()的区别
从名字看上去这两个方法好像有点关系,但在javascript中它们区别还是挺大的. forEach() 用于数组的操作,对数组中的每个元素执行制定的函数(不是数组不能使用forEach()方法). 而 ...
- JavaScript中的for in循环
在学习AJAX的时候,发现JavaScript中for in循环,这种循环对于遍历JSON是很好用的.于是写下了这篇博文 作用 for in循环本质上是forEach循环,它主要有两个作用 遍历数组 ...
随机推荐
- Java 定时任务技术趋势
简介:定时任务是每个业务常见的需求,比如每分钟扫描超时支付的订单,每小时清理一次数据库历史数据,每天统计前一天的数据并生成报表等等. 作者:黄晓萌(学仁) Java 中自带的解决方案 使用 Time ...
- PolarDB for PostgreSQL 开源路线图
简介:作者:蔡乐 本文主要分享一下Polar DB for PG的开源路线图,虽然路线图已经拟定,但是作为开源产品,所有参与者都能提出修改意见,包括架构核心特性的技术以及周边生态和工具等,希望大家能 ...
- 工业视觉智能实战经验之IVI算法框架2.0
简介: 工业视觉智能团队在交付了多个工业视觉智能质检项目后,发现了工业视觉智能的共性问题和解法,打造了工业视觉智能平台,通过平台的方式积累和提升工业视觉的通用能力.在平台建设上最核心的能力是算法能力 ...
- [FE] yarn, npm 切换镜像源
yarn 设置命令如下,会修改 ~/.yarnrc 内容. $ yarn config set registry https://registry.yarnpkg.com npm 设置命令如下,会修改 ...
- [FAQ] Python list 的值是带有小括号的是什么意思 ?
python 中的 list 即列表,是用中括号 [ ] 表示的数组列表: dict 即字典,是用花括号 { } 表示的 json 对象: tuple 即元祖,是用小括号表示的序列: 见到它们之间的组 ...
- Educational Codeforces Round 162 (Rated for Div. 2) E
E:Link 枚举路径两端的颜色 \(k\). 令 \(g[x]\) 表示满足以下条件的点 \(y\) 数量. $ y \in subtree[x]$ \(col[y] = k\) \(y\) 到 \ ...
- 钉消息Markdown语法
支持的Markdown语法 1 标题 2 # 一级标题 3 ## 二级标题 4 ### 三级标题 5 #### 四级标题 6 ##### 五级标题 7 ###### 六级标题 8 9 引用 10 &g ...
- 16、数据库加固-mysql 加固
1.修改 DBA 登录密码 shell 下执行: mysqladmin -u root password 非首次修改:mysqladmin -u root password -p原密码 在 mysql ...
- java学习之旅(day.07)
面向对象编程(oop) 面向过程思想:线性思维 步骤清晰简单,每一步做什么很明确 适合处理较为简单地问题 面向对象思想:总分 抽象 属性+方法=类 分类的思维模式,思考问题首先会解决问题需要哪些分类, ...
- 🐬记一次MySQL执行修改语句超时问题
异常问题 原因分析 这个问题发生在开发环境,怀疑是提交事务时终止项目运行,没有提交该事务,造成死锁 调试该事务时时间太长,为什么说有这个原因呢,因为通过查找日志显示 The client was di ...