js无法跳出forEach循环

2018-11-01  本文已影响0人  kangaroo_v

没有办法中止或者跳出 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
上一篇下一篇

猜你喜欢

热点阅读