在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 < arr1.length; i++) { if (i === 1) { break // 跳出循环 } console.log(arr1[i]) // 1 } for (let i = 0; i < arr1.length; 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