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

JavaScript08

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

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

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

结果发现函数返回值是undefined

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

解决方案:

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

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

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

     我估计是你用的递归方法出的问题。假设你递归到了N层,在N+1层的时候找到了你要的结果。此时的循环只是跳出了N+1层的,没有跳出N层,而N层的循环可能还没有结束,会继续执行,更有可能还会继续递归。不知道我的猜想对不对,呵呵~!

      建议使用try/catch判断找到结果后抛出异常来终止函数的执行。我个人不喜欢使用递归方法。