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 相关文章推荐
HTML DOM的nodeType值介绍
Mar 31 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
使用jQuery重置(reset)表单的方法
May 05 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
Aug 07 Javascript
AngularJS实现一次监听多个值发生的变化
Aug 31 Javascript
JS实现带动画的回到顶部效果
Dec 28 Javascript
JS实现带导航城市列表以及输入搜索功能
Jan 04 Javascript
layui复选框的全选与取消实现方法
Sep 02 Javascript
bootstrap-paginator服务器端分页使用方法详解
Feb 13 Javascript
Vue 同步异步存值取值实现案例
Aug 05 Javascript
js实现计算器功能
Aug 10 Javascript
如何HttpServletRequest文件对象并储存
Aug 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
第三节 定义一个类 [3]
2006/10/09 PHP
php解决约瑟夫环示例
2014/04/09 PHP
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
javascript内存分配原理实例分析
2017/04/10 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
极简的Python入门指引
2015/04/01 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
python for 循环获取index索引的方法
2019/02/01 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
pandas中ix的使用详细讲解
2020/03/09 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
2020/05/23 Python
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
三个儿子教学反思
2014/02/03 职场文书
学习雷锋活动总结
2014/04/29 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
辞职信标准格式
2015/02/27 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
保留意见审计报告
2015/06/05 职场文书
九年级语文教学反思
2016/03/03 职场文书
财务年终工作总结大全
2019/06/20 职场文书
Shell脚本一键安装Nginx服务自定义Nginx版本
2022/03/20 Servers
python解析照片拍摄时间进行图片整理
2022/07/23 Python