在leetcode上刷题的时候踩的坑,题目是这样的
简单思考了一下,用最简单的双循环就可以解决问题,于是习惯性用forEach遍历了两次
结果发现函数返回值是undefined
百度了一下,发现是因为forEach多次执行回调函数,回调函数中使用return没法直接终止forEach,只能终止单次的回调。所以return语句在forEach内部是无法跳出循环的。
解决方案:
1.方案一:js针对数组操作的另外两个方法some()与every()
2.方案二:for/while语句老实循环
总结原因还是对forEach方法理解不够到位
跳出循环用 break 或 continue , 我想,你肯定是要 return 值到函数外面,foreach 因为没有返回值,所有不适合做递归,当然你不要返回值也能做。如果需要递归最后返回值 ,那用 for 或 while 这些没有 function 作用域的循环,最后 return 返回值就行 (一层一层的往外return)。
你要了解递归的特点,递进去,还要归出来
js循环遍历变量的方式有以下几种: 1.for(let i = 0i <5i++) 2.forEach 3.for of 4.for in 那么我们来看下这几种遍历方式的用法,以及退出循环的方法 1.for 这是最常用的遍历方法,for用来遍历数组,可以使用break 退出循环,使用continue来跳过本次循环。 2.forEach 除了抛出异常以外,没有办法中止或跳出 forEach() 循环。 并且forEach不会改变原来的数组 3.for of for of 可以迭代 可迭代对象 (包括 Array , Map , Set , String , TypedArray , arguments 对象等等) 对于for of,可以由break, throw 或return终止, 可以用continue略过此次循环。在这些情况下,迭代器关闭。