当前位置:首页 > 科技  > 软件

三种在JavaScript中终止forEach循环的方式

来源: 责编: 时间:2023-12-19 17:15:20 330观看
导读面试官:你能停止 JavaScript 中的 forEach 循环吗?这是我在面试中曾被问到的一个问题,我当初的回答是:“不,我不能这样做。”不幸的是,我的回答导致面试官突然结束了面试,对的,是突然结束的!我对结果感到沮丧,问面试官:“为什么?

面试官:你能停止 JavaScript 中的 forEach 循环吗?这是我在面试中曾被问到的一个问题,我当初的回答是:“不,我不能这样做。”bPC28资讯网——每日最新资讯28at.com

bPC28资讯网——每日最新资讯28at.com

不幸的是,我的回答导致面试官突然结束了面试,对的,是突然结束的!bPC28资讯网——每日最新资讯28at.com

我对结果感到沮丧,问面试官:“为什么?实际上可以停止 JavaScript 中的 forEach 循环吗?”bPC28资讯网——每日最新资讯28at.com

在面试官回答之前,我花了一些时间解释我对为什么我们不能直接停止 JavaScript 中的 forEach 循环的理解。bPC28资讯网——每日最新资讯28at.com

一、序言

这个问题估计会难倒一部分同学。甚至会有人反问,forEach循环在JavaScript中能终止吗? 比如 ,我举个例子bPC28资讯网——每日最新资讯28at.com

const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.forEach((it) => {  if (it >= 0) {    console.log(it)    // 0 1 2 3    return // or break  }})

从这个例子来看,好像不管是通过return还是break都无法终止forEach循环。 forEach相当于就是函数的执行,比如下面这段代码,即使func1执行了return语句,仍然会打印出2。bPC28资讯网——每日最新资讯28at.com

const func1 = () => {  console.log(1)  return} const func2 = () => {  func1()  console.log(2)} func2()

二、终止方法

然而,我能想到三种方式可以终止forEach循环。bPC28资讯网——每日最新资讯28at.com

1. 抛出错误

当找到一个大于等于0的数字之后,return循环将终止执行,所以控制台只会输出数字0,代码如下:bPC28资讯网——每日最新资讯28at.com

const array = [ -3, -2, -1, 0, 1, 2, 3 ] try {  array.forEach((it) => {    if (it >= 0) {      console.log(it) // 输出:0      throw Error(`We've found the target element.`)    }  })} catch (err) {}

2. 将数组长度设置成0

我们也能通过将数组长度设置成0来终止forEach循环。代码如下bPC28资讯网——每日最新资讯28at.com

const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.forEach((it) => {  if (it >= 0) {    console.log(it) // 输出:0    array.length = 0  }})

3. 将数组元素移除

当满足条件时,使用splice方法将数组内元素移除,也能终止forEach循环。代码如下:bPC28资讯网——每日最新资讯28at.com

const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.forEach((it, i) => {  if (it >= 0) {    console.log(it) // 输出:0    array.splice(i + 1, array.length - i)  }})

三、建议

建议使用for和somebPC28资讯网——每日最新资讯28at.com

在日常工作中,一般是不会出现一种情况是让你终止forEach循环的,如果有终止的情况,可以使用for和some方法。bPC28资讯网——每日最新资讯28at.com

for

const array = [ -3, -2, -1, 0, 1, 2, 3 ] for (let i = 0, len = array.length; i < len; i++) {  if (array[ i ] >= 0) {    console.log(array[ i ])    break  }}

some

const array = [ -3, -2, -1, 0, 1, 2, 3 ] array.some((it, i) => {  if (it >= 0) {    console.log(it)    return true  }})

最后,3种关于在JavaScript中终止forEach循环的方法就先介绍到这里了,希望对你有所帮助,感谢你的阅读,编程快乐!bPC28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-49907-0.html三种在JavaScript中终止forEach循环的方式

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 七个常用的 Vue 3 UI 组件

下一篇: 你应该了解的 15 个 CSS 隐藏属性

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • K60至尊版狂暴引擎2.0加持:超177万跑分斩获性能第一

    Redmi的后性能时代战略发布会今天下午如期举办,在本次发布会上,Redmi公布了多项关于和联发科的深度合作,以及新机K60 Ultra在软件和硬件方面的特性,例如:“K60 至尊版,双芯旗舰
  • 石头智能洗地机A10 Plus体验:双向自清洁治好了我的懒癌

    一、前言和介绍专为家庭请假懒人而生的石头科技在近日又带来了自己的全新旗舰新品,石头智能洗地机A10 Plus。从这个产品名上就不难看出,这次石头推出的并不是常见的扫地机器
  • 帅气纯真少年!日本最帅初中生选美冠军出炉

    日本第一帅哥初一生选美大赛冠军现已正式出炉,冠军是来自千叶县的宗田悠良。日本一直热衷于各种选美大赛,从&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 十个可以手动编写的 JavaScript 数组 API

    JavaScript 中有很多API,使用得当,会很方便,省力不少。 你知道它的原理吗? 今天这篇文章,我们将对它们进行一次小总结。现在开始吧。1.forEach()forEach()用于遍历数组接收一参
  • 一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • 小红书1周涨粉49W+,我总结了小白可以用的N条涨粉笔记

    作者:黄河懂运营一条性教育视频,被54万人&ldquo;珍藏&rdquo;是什么体验?最近,情感博主@公主是用鲜花做的,火了!仅仅凭借一条视频,光小红书就有超过128万人,为她疯狂点赞!更疯狂的是,这
  • OPPO K11搭载高性能石墨散热系统:旗舰同款 性能凉爽释放

    日前OPPO官方宣布,将于7月25日14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼
Top