Javascript Array forEach()中无法return和break,代替方法some()与every()

我们都知道for循环里要跳出整个循环是使用break,但在数组中用forEach循环如要退出整个循环使用break会报错,使用return也不能跳出循环。

使用break将会报错:
var arr = [1,2,3,4,5];
var num = 3;
arr.forEach(function(v){
   if(v == num) {
       break;
   }
   console.log(v);
});

这里写图片描述

使用return也不能跳出整个循环:
var arr = [1,2,3,4,5];
var num = 3;
arr.forEach(function(v){
   if(v == num) {
       return;
   }
   console.log(v);
});

这里写图片描述

针对这个问题可以使用数组的另外两个方法some()every()


some():当内部return true时跳出整个循环
var arr = [1,2,3,4,5];
var num = 3;
arr.some(function(v){
   if(v == num) {
       return true;
   }
   console.log(v);
});

这里写图片描述

every():当内部return false时跳出整个循环
var arr = [1,2,3,4,5];
var num = 3;
arr.every(function(v){
   if(v == num) {
       return false;
   }else{
       console.log(v);
       return true;
   }
});

这里写图片描述

JavaScript中,除了 `forEach`,还有一些内置的数组遍历方法也允许某种程度的提前退出,例如: 1. **`for...of` 循环**:这是一种更通用的遍历机制,你可以通过 `break` 或 `continue` 控制循环流程。如果遇到 `return`,会在整个循环结束后返回。 ```javascript for (let element of array) { if (someCondition) { return someValue; } // 其他操作... } ``` 2. **`for...in` 循环**:通常用于遍历对象的属性,也可以使用 `break` 或 `return` 结束循环,但需要注意的是,不是所有的 JavaScript 对象都有序。 3. **`Array.prototype.some()` `Array.prototype.every()`**:这两个方法用于检查数组是否有一些元素满足特定条件(some),或所有元素都满足条件(every)。它们都是在找到第一个匹配项或完成所有检查后返回结果,如果在过程中遇到 `return false` 或 `return true`,则会提前返回。 4. **`Array.prototype.find()` `Array.prototype.findIndex()`**:这两个方法查找数组中第一个满足条件的元素,如果找到就立即返回,如果没有符合条件的,则返回 `undefined` 或 `-1`。 5. **`Array.prototype.map()` `Array.prototype.reduce()`**:`map()` 创建新数组,而 `reduce()` 将数组变为单个值。尽管它们本质上是为了转换数据,但如果在回调中使用 `return`,也可以提前返回值,只是 `map()` 返回的新数组会包含最后一个返回值。 6. **`do...while` 循环**:这种循环先执行一次再判断条件,可以用 `break` 退出循环。 注意,在大部分情况下,`break` 可以让你提前退出当前迭代,而 `return` 则更常见于函数内部的控制流,因为它会影响到函数的整体执行。在遍历方法中,`return` 的效果取决于方法的行为,而非其本身的特性。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值