【面试题】forEach方法如何跳出循环?

2022-08-03  本文已影响0人  前端末晨曦吖

forEach方法如何跳出循环?

点击打开视频教程

1、for方法跳出循环

break跳出循环 continue跳出当次循环
//for方法  for方法跳出循环-----break跳出循环 continue跳出当次循环
handClickFor(){
  let arr=[1,3,5,7,9];
  let id = 5;
  for(var i=0;i<arr.length;i++){
    if(arr[i]===1)continue;
    console.log(arr[i])   //3、5
    if(arr[i]===id){
      break;
    }
  }
}

forEach方法为什么不能使用continue,break

// forEach方法使用continue,break是会报错
// arr.forEach(item => {
//   if(item===1)continue;
//   console.log(item)  
//   if(item===id){
//     break;
//   }
// })

首先,我们先理解下,为什么for方法可以continue,break,而forEach方法却报错;
因为for方法是语句,而forEach方法是函数

arr.forEach(function(item){
  
})

for和forEach的区别

1.forEach()不能使用break和continue这两个关键字,它实现break效果可以通过抛出异常的方式,实现continue的效果可以直接使用return

2.forEach的优势就是,它传入一个函数,因此形成了一个作用域,它内部所定义的变量不会像for循环一样污染全局变量

3.forEach()本身无法跳出循环,必须遍历所有的数据才能结束

forEach跳出循环方法

try catch

通过抛出异常的方式跳出循环 通过return跳过当次循环
handClickTryCatch(){
  let arr = ['1','2','3','4'];
  try {
      arr.forEach((item) => {
          if (item === '2') {
              throw new Error("退出循环");
          }
          console.log("foreach",item);
      });
  } catch (e) {
      if (e.message === "退出循环") {
          console.log("结束了");
          return this.$message.error('结束了');
      } else {
          console.log(e.message);
      }
  }
}

some()方法

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
let arr = ['1','2','3','4'];
if(arr.some((number) => {return number == 4})) {
  //代码块
  console.log('满足条件进来了')
}

every()方法

与some()方法相反
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:

如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
注意: every() 不会对空数组进行检测。
注意: every() 不会改变原始数组。
let arr = [1000, 2000, 3000]
let flag = arr.every(function (a, b, c) {
    console.log(a + "===" + b + "====" + c) //1000===0====1000,2000,3000
    return a > 2000;//数组中的每个元素的值都要大于2000的情况,最后才返回true
})
console.log(flag)   //false
上一篇 下一篇

猜你喜欢

热点阅读