有时候,需要遍历一个数组,对数组中的元素进行一些操作,但当某个元素满足一定条件时,就退出循环。
通常,会使用下面的写法:
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;
})