web颜值要爆表Web前端Web 前端开发

中断数组循环

2016-08-22  本文已影响57人  laohan

有时候,需要遍历一个数组,对数组中的元素进行一些操作,但当某个元素满足一定条件时,就退出循环。

通常,会使用下面的写法:

var arr = [1, 2, 3, 4, 5];
for(var i = 0, len = arr.length; i < len; i++) {
    if(i === 3) {
        break;
    }
    console.log(i); // 0, 1, 2
}

其实,也可以利用数组自带的方法。可能你会立马想到forEach这个方法,但是有一些人并不知道,这个方法并不支持break操作。

var arr = [1, 2, 3, 4, 5];
arr.forEach((el, idx) => {
    if(idx === 3) {
        break;
    }
    console.log(idx);
})
// 上面的代码会发生错误
// Uncaught SyntaxError: Illegal break statement

那么,forEach不行,还有什么方法呢?

有的,some、every就可以了。

some这个方法,会对数组进行遍历操作,当遍历到某一元素返回true时,就会停止遍历,并返回true,否则就遍历所有元素,返回false。

var arr = [1, 2, 3, 4, 5];
arr.some((el, idx) => {
    if(idx === 3) {
        return true;
    }
    console.log(idx); // 0, 1, 2
})

every这个方法跟some有点类似,也会对数组进行遍历操作,但是当遍历到某一元素返回false时,就停止遍历,并返回false,否则就遍历所有元素。仅当所有元素的操作都返回true时,此方法返回的结果才为true,否则为false。

var arr = [1, 2, 3, 4, 5];
arr.every((el, idx) => {
    if(idx === 3) {
        return false;
    }
    console.log(idx); // 0, 1, 2
    return true;
})
上一篇下一篇

猜你喜欢

热点阅读