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 相关文章推荐
showModelessDialog()使用详解
Sep 07 Javascript
Firebug 字幕文件JSON地址获取代码
Oct 28 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
JavaScript中的typeof操作符用法实例
Apr 05 Javascript
js实现回放拖拽轨迹从过程上进行分析
Jun 26 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 Javascript
angular-ui-sortable实现可拖拽排序列表
Dec 28 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
Feb 16 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
Apr 26 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
Sep 26 Javascript
浅谈vue-cli 3.0.x 初体验
Apr 11 Javascript
【js设计模式】SOLID五大设计原则
Mar 24 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 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
使用Node.js实现一个多人游戏服务器引擎
2019/03/13 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
python3.5使用tkinter制作记事本
2016/06/20 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
python递归函数绘制分形树的方法
2018/06/22 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
详解Python 定时框架 Apscheduler原理及安装过程
2019/06/14 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
ajax是什么及其工作原理
2012/02/08 面试题
一道Delphi上机题
2012/06/04 面试题
小学数学课后反思
2014/04/23 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
教师工作表现评语
2014/12/31 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
药房管理制度范本
2015/08/06 职场文书
python 进阶学习之python装饰器小结
2021/09/04 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers