在jquery中的each循环中是默认要写回调函数的返回值的,一般设置为false就默认跳出循环了。
比如:
var toReturn
$.each(someArray, function(i) {
$('body').append('->'+i+'<br />')
if(someArray[i] == word) {
toReturn = someArray[i]
return false//这里找到toReturn后就直接返回,不再继续循环。
}
})
return toReturn //返回找到的对象。
在一般的for循环里面,直接利用break即可。
比如:
for (i = 0i <10i++) {
if (i === 3) {
break//这里强制退出循环
}
text += "The number is " + i + "<br>"
}
在leetcode上刷题的时候踩的坑,题目是这样的
简单思考了一下,用最简单的双循环就可以解决问题,于是习惯性用forEach遍历了两次
结果发现函数返回值是undefined
百度了一下,发现是因为forEach多次执行回调函数,回调函数中使用return没法直接终止forEach,只能终止单次的回调。所以return语句在forEach内部是无法跳出循环的。
解决方案:
1.方案一:js针对数组操作的另外两个方法some()与every()
2.方案二:for/while语句老实循环
总结原因还是对forEach方法理解不够到位
each函数是一个多执行函数,它会把所有匹配到的元素都执行一次。第一,如果退出当前执行,请用return。第二种,如果要停止运行到剩下未执行,那么我还没有找到方法,建议在前面的选择器上做好范围限制,避免这种情况的发生。