看了一些文章,大概是以下2个方法:

1、throw new Error()

优点:可以中断循环执行;适用于各种形式(for循环,forEach循环等)
缺点:相当于强制抛错中断执行,不仅终止了循环,后续代码也不再执行

废话不多说,上例子,找出 【第一个爱吃芒果】 的人:

const arr = [{name: '张三',fruit: ['苹果', '香蕉']},{name: '李四',fruit: ['梨', '芒果']},{name: '王五',fruit: ['樱桃', '西瓜']},{name: '小红',fruit: ['菠萝', '芒果']},
]let person = undefinedfor (let i = 0; i < arr.length; i++) {for (let j = 0; j < arr[i].fruit.length; j++) {if (arr[i].fruit[j] === '芒果') {console.log(arr[i].name, arr[i].fruit[j])person = arr[i].name// 在这里抛出异常throw new Error('中断')}}
}
console.log('这里仍然可以执行', person)


看打印的结果:在找到第一个芒果之后,就抛出错,没有执行后续循环以及代码

【总结】

适用于验证拦截的情况,即没有后续代码。适用于各种循环形式
(但是抛个异常还是觉得怪怪的,不够完美啊)

2、为循环命名,跳出对应的循环

优点:多层循环时非常灵敏(想跳出哪一层,就跳出哪一层);循环体后面的代码仍然执行
缺点:必须是for循环!

上同样的例子:

const arr = [{name: '张三',fruit: ['苹果', '香蕉']},{name: '李四',fruit: ['梨', '芒果']},{name: '王五',fruit: ['樱桃', '西瓜']},{name: '小红',fruit: ['菠萝', '芒果']},
]let person = undefined// 为紧邻的for循环命名
testLoop:
for (let i = 0; i < arr.length; i++) {for (let j = 0; j < arr[i].fruit.length; j++) {console.log(arr[i].name, arr[i].fruit[j])if (arr[i].fruit[j] === '芒果') {person = arr[i].name// 跳出命名的循环break testLoop}}
}
console.log('这里仍然可以执行', person)


看打印的结果,不仅阻断了命名循环的执行,而且执行命名循环后续的代码!这就很妙了~

【总结】

1、因为后续代码仍然执行,所以可用于多种逻辑情况
(比如循环次数非常非常多,你想优化执行速度,只要拿到想到的结果之后,立刻终止循环)
2、灵活,非常灵活,跳出指定命名的循环;
3、所以就只好不辞辛苦地写for循环了,不过我认为值得

【番外篇】

我在想,是只需要变量紧邻的循环用for就可以了,还是每层都得用for循环呢??

机智(偷懒)的我,还是验证了一下,把第二层换成forEach

果不其然,现实给了我沉重的一击!

let person = undefinedtestLoop2:
for (let i = 0; i < arr.length; i++) {arr[i].fruit.forEach(item => {if (item === '芒果') {person = arr[i].namebreak testLoop2}})
}
console.log('这里仍然可以执行', person)


o(╥﹏╥)o

老老实实写for吧~

js 跳出多层循环(终止循环)相关推荐

  1. java中跳出循环终止循环_js for终止循环 跳出多层循环

    今天写带代码的时候遇到一段代码,需要终止运行for,通过遍历json数据实现判断 var Tid="55555"; var jb51cp = [ {id:66666,Cpurl:& ...

  2. js map满足条件跳出循环_js for等循环 跳出多层循环

    js for 循环 跳出多层循环 var a = [1,2,3,4,5,6,7,8]; // 8个数 var b = [11,12,13,14,15,3,16,17]; //8个数 testFor() ...

  3. js for、forEach, 跳出多层循环

    1.for跳出循环 var a = [1, 2, 3, 4, 5, 6, 7, 8]; // 8个数 var b = [11, 12, 13, 14, 15, 3, 16, 17]; //8个数tes ...

  4. python的跳出循环方式(跳出多层循环方法)

    常规的break跳出当前循环,continue终止当前,不会跳出整个循环,当有多个循环时,如何跳出整个循环 break跳出当前最深的循环 def test1():for i in range(3):f ...

  5. java跳出for循环_Java跳出多层for循环的4种方式

    Java跳出多层for循环的4种方式 一.使用return关键字控制 for (int i = 0;i<10;i++){ for (int j = 0; j<10; j++) { if ( ...

  6. Python教程:跳出多层循环for、while

    for跳出多层循环 break_flag = False for i in range(10):print("爷爷层",i)for j in range(10):print(&qu ...

  7. 【Java基础】使用带有标签的break,跳出多层循环

    带有标签的break 多层for循环嵌套中,在某一个for循环前面加一个标签,如label:,在需要break的时候就可以直接break出多层循环,跳至label处(label后面紧跟的循环也被跳出) ...

  8. java 中break如何跳出多层循环(包含二层循环)

    问题:break只能跳出一层循环,如下: while(true){ for (int i = 1; i <= s; i++) {t2++;s2 += v2;if (s2 >= l) {Sy ...

  9. python多重循环break_Python教程:跳出多层循环for、while

    for跳出多层循环 break_flag = False for i in range(10): print("爷爷层",i) for j in range(10): print( ...

最新文章

  1. 5软件开发与软件测试
  2. 信息系统项目管理师论文考试汇总(2010~2021年)
  3. pygame中Rect(left, top, width, height)的参数详解
  4. 编写一个C程序,实现以下功能:输入n个人的身高,然后从n个人中选出身高差值最小的两个人作为礼仪(如果差值相同的话,选取其中最高的两个人),要求输出两个礼仪的身高。
  5. javascript使用_用JavaScript唤醒沉睡的城市
  6. ubuntu 升级python3_ubuntu16.04安装python3
  7. JavaScript执行bat文件清理浏览器缓存
  8. html怎么只操作第一个li,css3如何选择第一个子元素?
  9. DELL LATITUDE E5510 笔记本电脑屏幕闪烁问题的解决.
  10. 解决ArcGIS 报错:ERROR 999999: Error executing function.No spatial reference exists.No spatial reference
  11. [译]C++17,使用 string_view 来避免复制
  12. 阿里云镜像站repo文件
  13. Android实时获取音量(单位 分贝)
  14. 《微信小程序》初识微信小程序
  15. YoutubeAPI使用
  16. GB2312汉字区位码、交换码和机内码
  17. python中的range()函数
  18. 华为手机备份的通讯录是什么文件_华为手机通讯录在哪个文件夹?
  19. Halcon 3D 三维重建
  20. B站崩了上热搜,说好的高可用呢?

热门文章

  1. js获取当前时间戳以及前一天时间戳
  2. 【Linux】系统下的磁盘分区(重难点)
  3. 计算机无法自动待机,win7 64位旗舰版电脑无法自动进入到待机状态怎么办
  4. 从0开始做公众号|零基础如何运营一个公众号?
  5. java hashmap is遍历_关于内存:在Java(或Scala)中遍历HashMap的HashMap
  6. vitis 自带ila调试
  7. 蓝牙无线运动耳机排行榜、口碑最好的运动蓝牙耳机推荐
  8. esp32使用内部flash创建文件系统
  9. 多种编码的基本转换(收集)
  10. android 控制电脑 源代码 鼠标,如何用鼠标键盘来控制手机?这个开源工具可以帮你做到...