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 相关文章推荐
做网页的一些技巧
Feb 01 Javascript
JS实现一键回顶功能示例代码
Oct 28 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
jQuery滚动条插件nanoscroller使用指南
Apr 21 Javascript
JS实现字符串转日期并比较大小实例分析
Dec 09 Javascript
JavaScript小技巧整理
Dec 30 Javascript
jQuery实现Select左右复制移动内容
Aug 05 Javascript
谈谈React中的Render Props模式
Dec 06 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
javascript设计模式 ? 中介者模式原理与用法实例分析
Apr 20 Javascript
vue 页面回退mounted函数不执行的解决方案
Jul 26 Javascript
原生JS实现飞机大战小游戏
Jun 09 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入门学习的几个不错的实例代码
2008/07/13 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
详解vue axios中文文档
2017/09/12 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
jQuery实现点击滚动到指定元素上的方法分析
2020/03/19 jQuery
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
2019/04/16 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
结构和类有什么异同
2012/07/16 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
广播体操口号
2014/06/18 职场文书
教师群众路线心得体会
2014/11/04 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
推普标语口号大全
2015/12/26 职场文书