菜鸟笔记
提升您的技术认知

js中几种循环的退出方式-ag真人游戏

js各种for循环的结束方式

  • 一、for循环
  • 二、foreach循环
  • 二、map循环
    • 终止map循环的方式和foreach相同
  • 三,for in 循环
  • 四,for of 循环
  • 五,every()和some()

终止for循环的方式:break和continue
break:退出循环 continue:退出本次循环

let list = [1, 2, 3, 4]
for (let i = 0; i < list.length; i  ) {
  
  if (i == 1) {
  
    continue
  }
  if (i == 2) {
   
    break;
  }
}

用return、break、continue的方式都不能终止foreach循环,return在foreach里相当于for循环里的continue,能够退出本次循环,可以使用try...chtch终止foreach循环

try{
  
  var array = ["first","second","third","fourth"];
  // 执行到第3次,结束循环
  array.foreach(function(item,index) {
  
    if(item == "third"){
  
      throw new error("enditerative");
    }
 
    console.log(item); // first second
  });
}catch(e){
  
  if(e.message != "enditerative") throw e;
}
// 下面的代码不影响继续执行
console.log("继续执行。。。");

·map和foreach的区别

  • map不会改变原数组,而是会返回一个新的数组,数组中的元素为原数组调用callback函数处理后的值;如果是空数组,map返回的也是空数组
  • foreach只针对数组的每个元素调用callback,没有返回值,对于空数组是不会调用回调函数的,也没有返回值

终止map循环的方式和foreach相同

let list = [1, 2, 3, 4]
try {
  
  list?.map(item => {
  
    console.log('执行');
    if (item == 1) {
  
      throw new error('stop')
    }
  })
} catch (e) {
  
  if (e.message !== 'stop') {
  
    throw e
  }
}
list?.some(item => {
  
  if (item == 1) {
  
    return true
  }
})

可以看出,foreach和map并不适合提前终止循环的情景,可以用every()、some()代替

for…in循环主要是为了遍历对象的,break或continue可以生效

注:当for…in用来遍历数组时,遍历的结果为当前元素索引值的字符串形式

const person = {
  
  name: "111",
  age: 18,
  1: 1,
  job: "student",
};
for (const key in person) {
  
  if (key === "age") {
  
    break;
  }
  if (key === 'name') {
  
    continue;
  }
}

for…of和for…in都能用break和continue结束(跳出当前)循环

我们都知道for…of只能用来遍历那些内置iterator(array, atring, arraylike, set, map…)或者实现了@@iterator方法的数据类型,而普通的object并没有内置iterator

for (const val of arr) {
if (val === 2) {
continue;
}
if (val === 3) {
break;
}
}

every():相当于且,只要有一个不满足条件,就return false,只有都满足条件才会返回true

some():相当于或,只要有一个满足条件,就return true

let list = [
  {
   name:"aaa", age:3 },
  {
   name:"bbb", age:4 },
  {
   name:"ccc", age:5 },
]
var every = list.every(function (item) {
  
  return item.age > 4
})
console.log(eve) // false
var some = list.some(function (item) {
  
  return item.age > 4
})
console.log(some) // true

some退出循环:return / return true(不能return false) every退出循环:return false

网站地图