Javascript学习之路:JS中的遍历跳出循环总结

本文总结了JavaScript中各种遍历方法(如for,forEach,map,for...of,while等)如何使用break,continue,return来控制循环的退出。特别指出在forEach和map中不能直接使用break,但可通过return或抛出异常模拟跳出循环。同时提到了every和some方法,它们可以根据返回值决定是否继续遍历。
摘要由CSDN通过智能技术生成

javascript中的遍历方法有很多,今天,主要总结一下这些遍历方法如何跳出循环,欢迎各位大神和同行们指教和修正😁
首先,必须要知道的是:

  • return必须是使用在函数里面的
  • return有2个作用,结束函数和返回结果

JS中的遍历有如下方式可以跳出循环

1.for方法 跳出循环

  • break 跳出当前循环,循环后面的代码仍然可以执行
  • return 可以终止当前函数,循环后面的代码不可以执行
  • continue 跳过当次循环,仍然执行后续的循环
function a(){
var arr = [1,3,5,7,9];
var id = 5;
for (var i = 0; i < arr.length; i++) {
     if(arr[i]=== 1) continue;    //跳过当次循环
     console.log(arr[i])
     if (arr[i] === id) {    
         break;                   //满足条件,跳出循环;循环后面的代码仍然可以执行
     }
	 if (arr[i] === 6) {
	     return;                   //满足条件,可以终止当前函数
	 }
 }
}

2.forEach方法跳出循环

  • 无法使用break,continue来跳出遍历, 因为foreach是异步执行,可能在break之前代码就已经执行完了
  • forEach()本身无法跳出循环,必须遍历所有的数据才能结束
  • 通过抛出异常的方式跳出循环 实现break效果
// 在forEach中,无法用break等函数在遍历结束之前结束遍历,如果要提前终止,必须把forEach()方法放在一个try块中,并能抛出一个异常。 
var arr = [1,3,5,7,9];
var id = 5;
try {
     arr.forEach(function (curItem, i) {
         if(curItem === 1) return;
         console.log(curItem)
         if (curItem === id) {
             throw Error();         //满足条件,跳出循环
         }
     })
 } catch (e) {
 }
  • 通过return跳过当次循环 实现continue的效果
arr.forEach(function (curItem, i) {
     if(curItem === 1) return;
     console.log(curItem)
     if (curItem === id) {
         return;         //满足条件,跳出当次循环
		                 // break 语法报错;
 			 
     }
 })

3. map() 跳出循环

  • map和forEach一样无法通过break跳出循环。
  • map() 和 forEach()的区别
 // 前者不改变原数组的内容
 // 后者改变原数组的内容

4. for of 跳出循环

  • continue 跳出当次循环
for (let i of arr) {
	if (i === 3) {
	  continue
	}
	console.log(i)
}
  • break 跳出当前循环
for (let i of arr) {
	if (i === 3) {
	  break
	}
	console.log(i)
}
  • return 可以终止当前函数,循环后面的代码不可以执行
var a=[1,2,3,4];
function b(){
	for(var key of a){
		if(key=2){
			return false
		};
		console.log('哈哈哈')}
};
console.log(b()) //false

5. while do while 跳出循环

  • continue 跳出当次循环
let j = 1
while (j < 6) {
  if (j === 3) {
	j++
	continue
  }
  console.log(j) // 1 2  4 5
  j++
}
  • break 跳出当前循环
var i=0;
while (i < 6) {
  if (i === 3) {
	  i++
	break
  }
  console.log(i) // 0,1,2
  i++
}
  • return 可以终止当前函数,循环后面的代码不可以执行
var i=0;
while (i < 6) {
  if (i === 3) {
	return
  }
  console.log(i)
  i++
}

every 遍历

  • every可以通过return的返回bool值,控制是否继续遍历。
  
	 let arr = [1, 2, 3, 4, 5]
	   arr.every(i => {
	     console.log(i)
	     return true //1,2,3,4,5
	   })
	   
	 	arr.every(i => {
	     console.log(i)
	     if (i === 3) {
	       return false //1,2,3
	     } else {
	       return true
	     }
	   })
	 

some 遍历

  • some 可以通过控制return true来结束遍历。
  • 如果没有写return,会遍历到最后一个值,默认给true关闭
  let arr = [1, 2, 3, 4, 5]
      arr.some(i => {
        console.log(i) // 1,2,3,4,5
      })
     
    
arr.some(i => {
        console.log(i)
        if (i === 3) {
          return true //1,2,3
        }
      })
    }
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值