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 相关文章推荐
JavaScript判断表单提交时哪个radio按钮被选中的方法
Mar 21 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
JS时间特效最常用的三款
Aug 19 Javascript
前端微信支付js代码
Jul 25 Javascript
用JavaScript实现让浏览器停止载入页面的方法
Jan 19 Javascript
js制作简单的音乐播放器的示例代码
Aug 28 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
Jan 03 Javascript
JS module的导出和导入的实现代码
Feb 25 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
Apr 02 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 Javascript
vue.js的状态管理vuex中store的使用详解
Nov 08 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
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 cron中的批处理
2008/09/16 PHP
php中函数的形参与实参的问题说明
2010/09/01 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
php共享内存段示例分享
2014/01/20 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
JS实现5秒钟自动封锁div层的方法
2015/02/20 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
vuejs如何配置less
2017/04/25 Javascript
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
no-vnc和node.js实现web远程桌面的完整步骤
2019/08/11 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
js实现贪吃蛇小游戏(加墙)
2020/07/31 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
实例解析Python中的__new__特殊方法
2016/06/02 Python
Python对List中的元素排序的方法
2018/04/01 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
Python实现直播推流效果
2019/11/26 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
建筑工地质量标语
2014/06/12 职场文书
培训科主任岗位职责
2014/08/08 职场文书
团队拓展活动方案
2014/08/28 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
2014年教研工作总结
2014/12/06 职场文书
植树节新闻稿
2015/07/17 职场文书
大学同学聚会感言
2015/07/30 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers