forEach方法跳出循环

前文

没怎么理解JavaScript的forEach方法的童鞋使用forEach时很容易遇到一个问题就是,当你想要跳出这个循环时,发现returnbreak是不起作用的。下面我们来分析一下原因以及解决方法。

正文

首先我们要知道的是forEach方法的机制是对数组的每个有效元素执行一次callback函数,然后returnbreak等只作用于一个函数,也就造成了无法跳出forEach循环的问题,而是只能跳过当前函数的执行。

解决方案

曲线救国(SegmentFault

通过使用抛出异常的方式可以中止。

function foo(arr ,item){
    var BreakException= {};

    try {
        arr.forEach(function(i) {
            if(i === item) throw BreakException;
            console.log(i);
        });
    } catch(e) {
        if (e!==BreakException) throw e;
    }
}

Array.some&Array.every

正常的使用环境:如果是测试一个数组里的元素是否符合某条件,且需要返回一个布尔值则应该使用这两个方法。这里可用于跳出循环。

function foo(arr ,item){
        arr.some(function(i) {
            if(i === item) return true;
            console.log(i);
        });
}
function foo(arr ,item){
        arr.every(function(i) {
            if(i === item) return false;
            console.log(i);
        });
}

循规蹈矩

如果你需要这样,使用forEach()方法是错误的,你可以用一个简单的循环作为替代。— — MDN
对于多重for循环,我们跳出循环需要特殊处理一下:

xh: //首先将循环命名
 for(var i=0;i<10;i++){
    for(var j=0;j<5;j++){
        if(i==3 && j==4){
            break xh;   //跳出循环xh
        }
    }
 }

参考

1 https://segmentfault.com/q/1010000003866554
2 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,565评论 0 13
  • 有人说过,很多弯路到最后都成了直路,所有的坑到最后也都成了坦途;所谓的直路和坦途并不是摆在眼前的,都是不断的的...
    老衲法号一眉道人阅读 1,458评论 0 4
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 3,608评论 1 24
  • G:【人际暴露技术之搭讪训练】搭讪训练是人际暴露技术的一种。通过向陌生人搭讪,使自己暴露在别人面前,最终取得在陌生...
    木子青青草阅读 235评论 0 0
  • 活脱脱的人 别被身份感扣住 普通或不普通 都抵不过真实的你 散发出来的高贵 没有身份感的人 才敢于感受酸甜苦辣 积...
    琥珀川哦阅读 600评论 2 2

友情链接更多精彩内容