js for终止循环 跳出多层循环
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
今天脚本之家小编写带代码的时候遇到一段代码,需要终止运行for,通过遍历json数据实现判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <script> var Tid= "55555" ; var jb51cp = [ {id:66666,Cpurl: "https://baidu.com" }, {id:55555,Cpurl: "https://www.jb51.net" } ]; for ( var i = 0; i < jb51cp.length; i++){ if (jb51cp[i].id==Tid){ var thevalue=jb51cp[i].Cpurl; break ; } } alert(thevalue); </script> |
通过上面的代码,完美解决了我的需求,但感觉性能不高,建议用switch函数,json方便批量输出,通过for判断会降低性能。注意查看break的地方。
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | var a = [1,2,3,4,5,6,7,8]; // 8个数 var b = [11,12,13,14,15,3,16,17]; //8个数 testFor(); console.log( '555' ) function testFor() { for ( var k=0;k<a.length;k++){ console.log( '444' ); for ( var i=0;i<a.length;i++){ for ( var j=0;j<b.length;j++){ if ( a[i]==b[j] ){ return false ; } console.log( '111' ); } console.log( '2222' ); } console.log( '333' ); } } 输出: // 1次444 // 8次111 // 1次222 // 8次111 // 1次222 // 5次111 // 1次555 |
可见 return 会直接跳出多层循环,返回调用的方法外部
原因: js里for是没有局部作用域的概念,方法才能一个局部作用域
return将会跳出当前局部作用继续执行下面的方法
注意:
1.这里for循环如果直接放在全局作用域下执行而不被一个方法包裹,
将直接导致写在for后的代码永远不会被执行;
2.如遇到逻辑特别复杂多层循环的时候,会遇到一些迭代器之类的方法,
这种迭代器实现的不同,会出现另一种情况,即不会跳出任何循环,
循环仍然继续,只是当前循环if后的代码不会被执行一次,下一次循环开始时,
仍然会执行if后的代码
如:
var cc = 'xx';
Object.keys(o).forEach(function(key) {
var val = o[key];
if(cc == key){
return false;
}
console.log(key);
});
此外还有
break;
continue;
语句
break 语句跳出循环后,会继续执行该循环之后的代码 (退出循环)
continue continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。(跳过当前迭代,进入下次迭代)
这两个语句可以指定label从而可以退出特定的循环
如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | bbq: for ( var j=0;j<a.length;j++){ ccc: for ( var i =0;i<a.length;i++){ if ( i==5 ){ break bbq; //直接跳出bbq外层循环 } } } 或者: function testFor() { bbq: for ( var k=0;k<a.length;k++){ console.log( '444' ); ccc: for ( var i=0;i<a.length;i++){ ddd: for ( var j=0;j<b.length;j++){ if (j == 2){ break ; } console.log( 'j ' +j); } console.log( 'i ' +i); } console.log( 'k ' +k); } } |
// 只会每次循环j==2时退出ddd循环然后外面的循环都会继续循环
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
相关文章
使用do...while的方法输入一个月中所有的周日(实例代码)
下面小编就为大家带来一篇使用do...while的方法输入一个月中所有的周日(实例代码)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-07-07TypeScript中interface和type的区别详解
本文主要介绍了TypeScript中interface和type的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-07-07
最新评论