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 相关文章推荐
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
Jan 16 Javascript
javascript中RegExp保留小数点后几位数的方法分享
Aug 13 Javascript
jquery实现点击展开列表同时隐藏其他列表
Aug 10 Javascript
纯JavaScript代码实现文本比较工具
Feb 17 Javascript
JavaScript对象创建模式实例汇总
Oct 03 Javascript
使用JS正则表达式 替换括号,尖括号等
Nov 29 Javascript
jQuery 表单序列化实例代码
Jun 11 jQuery
vue服务端渲染添加缓存的方法
Sep 18 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
Jan 28 Javascript
jquery.pager.js实现分页效果
Jul 29 jQuery
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 Javascript
vue-cli设置publicPath小记
Apr 14 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
MySQL数据源表结构图示
2008/06/05 PHP
写出高质量的PHP程序
2012/02/04 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
thinkphp关于简单的权限判定方法
2017/04/03 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
javascript html5 canvas实现可拖动省份的中国地图
2016/03/11 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
Python 实现自动导入缺失的库
2019/10/29 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
GetYourGuide台湾:预订旅游活动、景点和旅游项目
2019/06/10 全球购物
会计专业毕业生推荐信
2013/11/05 职场文书
社会调查研究计划书
2014/05/01 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
创业计划书之健康营养产业
2019/10/15 职场文书
Mysql基础之常见函数
2021/04/22 MySQL
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python