js for终止循环 跳出多层循环


Posted in Javascript onOctober 04, 2018

今天三水点靠木小编写带代码的时候遇到一段代码,需要终止运行for,通过遍历json数据实现判断

<script>
var Tid="55555";
var 3watercp = [
{id:66666,Cpurl:"https://baidu.com"},
{id:55555,Cpurl:"https://3water.com"}
];
 
 
for(var i = 0; i < 3watercp.length; i++){
	if(3watercp[i].id==Tid){
	var	thevalue=3watercp[i].Cpurl;
	break;
		}
}
alert(thevalue);
</script>

通过上面的代码,完美解决了我的需求,但感觉性能不高,建议用switch函数,json方便批量输出,通过for判断会降低性能。注意查看break的地方。

示例代码

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从而可以退出特定的循环

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循环然后外面的循环都会继续循环

Javascript 相关文章推荐
prototype1.4中文手册
Sep 22 Javascript
javascript椭圆旋转相册实现代码
Jan 16 Javascript
javascript一元操作符(递增、递减)使用示例
Aug 07 Javascript
js实现简单的购物车有图有代码
May 26 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
Aug 02 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
Express进阶之log4js实用入门指南
Feb 10 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 Javascript
VueJS 组件参数名命名与组件属性转化问题
Dec 03 Javascript
基于JavaScript实现控制下拉列表
May 08 Javascript
详细分析React 表单与事件
Jul 08 Javascript
iView-admin 动态路由问题的解决方法
Oct 03 #Javascript
Angular resolve基础用法详解
Oct 03 #Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 #Javascript
angular.js实现列表orderby排序的方法
Oct 02 #Javascript
Angularjs实现数组随机排序的方法
Oct 02 #Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
Oct 02 #Javascript
angularjs获取到My97DatePicker选中的值方法
Oct 02 #Javascript
You might like
PHP中将字符串转化为整数(int) intval() printf() 性能测试
2020/03/20 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
下雪了 javascript实现雪花飞舞
2020/08/02 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
微信小程序实现无限滚动列表
2020/05/29 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
java直接调用python脚本的例子
2014/02/16 Python
在Python中使用异步Socket编程性能测试
2014/06/25 Python
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
python遍历数组的方法小结
2015/04/30 Python
python之Character string(实例讲解)
2017/09/25 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
pandas 对日期类型数据的处理方法详解
2019/08/08 Python
python web框架 django wsgi原理解析
2019/08/20 Python
python实现的生成word文档功能示例
2019/08/23 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
学前教育专业毕业生自荐信
2013/10/03 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
运动会通讯稿150字
2014/02/15 职场文书
学习标兵获奖感言
2014/02/20 职场文书
活动总结格式范文
2014/04/26 职场文书
同志主要表现材料
2014/08/21 职场文书
少先队活动总结
2014/08/29 职场文书
Windows server 2012搭建FTP服务器
2022/04/29 Servers
Mysql如何查看是否使用到索引
2022/12/24 MySQL