美文网首页
js无法跳出forEach循环

js无法跳出forEach循环

作者: kangaroo_v | 来源:发表于2018-11-01 12:45 被阅读0次

    没有办法中止或者跳出 forEach 循环,除了抛出一个异常。如果你需要这样,使用forEach()方法是错误的,你可以用一个简单的循环作为替代。如果您正在测试一个数组里的元素是否符合某条件,且需要返回一个布尔值,那么可使用 Array.every 或 Array.some。如果可用,新方法 find() 或者findIndex() 也可被用于真值测试的提早终止

    some():方法用于检测数组中的元素是否有满足指定条件的,若满足返回true,否则返回false;
    every():方法用于检测数组中所有元素是否都符合指定条件,若符合返回true,否则返回false;

    Array.some

    语法:array.some(function(item,index,array){
    item:当前元素的值;
    index:当前元素的索引;
    array:当前元素的数组对象;
    })

    some()方法会依次执行数组的每个元素;
    如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false
    注意:some()不会对空数组进行检测;
    some()不会改变原始数组;

    实例
    检测数组中是否有元素大于 18:
    
    var ages = [3, 10, 18, 20];
    
    function checkAdult(age) {
        return age >= 18;
    }
    
    function myFunction() {
        document.getElementById("demo").innerHTML = ages.some(checkAdult);
    }
    //true
    

    Array.every
    every()方法使用指定函数检测数组中的所有元素;
    如果数组中检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回true;
    注意:every()不会对空数组进行检测;
    every()不会改变原来的数组

    实例
    检测数组 ages 的所有元素是否都大于等于 18 :
    
    var ages = [32, 33, 16, 40];
    
    function checkAdult(age) {
        return age >= 18;
    }
    
    function myFunction() {
        document.getElementById("demo").innerHTML = ages.every(checkAdult);
    }
    //false
    

    find

    实例
    获取数组中年龄大于 18 的第一个元素
    
    var ages = [3, 10, 18, 20];
     
    function checkAdult(age) {
        return age >= 18;
    }
     
    function myFunction() {
        document.getElementById("demo").innerHTML = ages.find(checkAdult);
    }
    //18
    

    findIndex()

    实例
    获取数组中年龄大于等于 18 的第一个元素索引位置
    
    var ages = [3, 10, 18, 20];
     
    function checkAdult(age) {
        return age >= 18;
    }
     
    function myFunction() {
        document.getElementById("demo").innerHTML = ages.findIndex(checkAdult);
    }
    //2
    

    相关文章

      网友评论

          本文标题:js无法跳出forEach循环

          本文链接:https://www.haomeiwen.com/subject/dmztxqtx.html