在js里经常用的循环,比如循环数组或对象,但经常会遇到在循环中如何跳出本次循环或要终止循环。下面给大家总结下常用的循环for/for in/each/for each/some()/every().
1.for循环中,break可跳出循环。continue跳过本次循环,执行下一次循环 。
let arr1 = [1, 3, 5, 7, 9]
for (let i = 0; i
if (i === 1) {
break // 跳出循环
}
console.log(arr1[i]) // 1
}
for (let i = 0; i
if (i === 2) {
continue // 跳过本次循环,继续下一个循环
}
console.log(arr1[i]) // 1 5 7 9
}
同理:for in循环一个对象时也是适合break和continue
let obj = {
name: 'Anny',
age: 14,
address: '宁波市'
}
for (let key in obj) {
if (key === 'age') {
break // 当key等于age时就会跳出整个循环
}
console.log(key) // name
}
console.warn('-------')
for (let key in obj) {
if (key === 'age') {
continue // 当key等于age时,就会跳过此次循环,进入下一次循环
}
console.log(key) // name address
}
forEach可以循环数组或对象,但正常下不能终止循环,除非加上try catch
/**
* return在forEach中可以用来跳过本次循环
*/
let arr1 = [1, 3, 5, 7, 9]
arr1.forEach((v, i) => {
if (i === 2) {
return // i = 2时,跳过本次循环,进入下一个
}
console.log(v) // 1 3 7 9
})
//如果需要终止forEach,
try {
// 执行到第3次,结束循环
arr1.forEach(function(item,index){
if (item == 3) {
throw new Error("End");
}
console.log(item); // 1,3
});
} catch(e) {
if(e.message!="End") throw e;
}
js中every()和some()的用法
every()与some()方法都是JS中数组的迭代方法。every()和some()都会对数组中的每一项运行给定函数,对every()来说,如果该函数对每一项返回true,则返回true;而some()的话,对任一项返回true,则返回true。
var arr = [ 1, 2, 3, 4, 5, 6 ];
console.log("test every() with &&");
console.log( arr.every( function( item, index, array ){
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
}));
console.log('\ntest some() with ||');
console.log( arr.some( function( item, index, array ){
console.log( 'item=' + item + ',index='+index+',array='+array );
return item > 3;
}));
结果如下
test every() with &&
item=1,index=0,array=1,2,3,4,5,6
false
test some() with ||
item=1,index=0,array=1,2,3,4,5,6
item=2,index=1,array=1,2,3,4,5,6
item=3,index=2,array=1,2,3,4,5,6
item=4,index=3,array=1,2,3,4,5,6
true