关于[JS] forEach循环return无法跳出的踩坑和解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于[JS] forEach循环return无法跳出的踩坑和解决方案相关的知识,希望对你有一定的参考价值。

参考技术A

在leetcode上刷题的时候踩的坑,题目是这样的

简单思考了一下,用最简单的双循环就可以解决问题,于是习惯性用forEach遍历了两次

结果发现函数返回值是undefined
百度了一下,发现是因为forEach多次执行回调函数,回调函数中使用return没法直接终止forEach,只能终止单次的回调。所以return语句在forEach内部是无法跳出循环的。

解决方案:
1.方案一:js针对数组操作的另外两个方法some()与every()

2.方案二:for/while语句老实循环

总结原因还是对forEach方法理解不够到位

js 终止 forEach 循环

1.因为 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("继续执行。。。");

.

以上是关于关于[JS] forEach循环return无法跳出的踩坑和解决方案的主要内容,如果未能解决你的问题,请参考以下文章

for循环与forEach循环的区别

注意forEach不能使用return跳出循环

foreach中使用return失效

JS中的forEach,for in,for of和for的遍历优缺点及区别

关于js foreach map

js 各种循环的区别与用法(for in,forEach,for of)