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 相关文章推荐
利用js的Node遍历找到repeater的一个字段实例介绍
Apr 25 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
Apr 27 Javascript
js将字符串转成正则表达式的实现方法
Nov 13 Javascript
基于jQuery的图片不完全按比例自动缩小
Jul 11 Javascript
js定时器实例分享
Dec 20 Javascript
详解vue2.0脚手架的webpack 配置文件分析
May 27 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
微信小程序实现红包功能(后端PHP实现逻辑)
Jul 11 Javascript
详解Angular Karma测试的持续集成实践
Nov 15 Javascript
vue模块移动组件的实现示例
May 20 Javascript
vue+AI智能机器人回复功能实现
Jul 16 Javascript
JavaScript实现点击自制菜单效果
Feb 02 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP学习之数组值的操作
2011/04/17 PHP
PHP使用feof()函数读文件的方法
2014/11/07 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
实例解析php的数据类型
2018/10/24 PHP
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
如何提高数据访问速度
2016/12/26 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
Vue核心概念Getter的使用方法
2019/01/18 Javascript
js判断密码强度的方法
2020/03/18 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
python executemany的使用及注意事项
2017/03/13 Python
Django实现自定义404,500页面教程
2017/03/26 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python编写一个优美的下载器
2018/04/15 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
Python如何实现远程方法调用
2020/08/07 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
校庆接待方案
2014/03/18 职场文书
产品质量承诺书范文
2014/03/27 职场文书
租房协议书怎么写
2014/04/10 职场文书
党支部承诺书
2015/01/20 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL