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实现下拉框的动态添加(附效果)
Apr 03 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
May 08 Javascript
js 走马灯简单实例
Nov 21 Javascript
利用javascript判断文件是否存在
Dec 31 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 Javascript
Bootstrap源码解读表单(2)
Dec 22 Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 Javascript
微信二次分享报错invalid signature问题及解决方法
Apr 01 Javascript
如何提升vue.js中大型数据的性能
Jun 21 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
小程序中设置缓存过期的实现方法
Jan 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
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
ionic2自定义cordova插件开发以及使用(Android)
2017/06/19 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
js实现开关灯效果
2020/03/30 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
python列表的常用操作方法小结
2016/05/21 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
python 矩阵增加一行或一列的实例
2018/04/04 Python
python识别验证码的思路及解决方案
2020/09/13 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
Hotter Shoes美国官网:英国最受欢迎的舒适鞋
2018/08/02 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
房地产销售员的自我评价分享
2013/12/04 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
2014小学教师年度考核工作总结
2014/12/03 职场文书
教师考核鉴定意见
2015/06/05 职场文书
2015年中秋节主持词
2015/07/30 职场文书