在leetcode上刷题的时候踩的坑,题目是这样的
简单思考了一下,用最简单的双循环就可以解决问题,于是习惯性用forEach遍历了两次
结果发现函数返回值是undefined
百度了一下,发现是因为forEach多次执行回调函数,回调函数中使用return没法直接终止forEach,只能终止单次的回调。所以return语句在forEach内部是无法跳出循环的。
解决方案:
1.方案一:js针对数组操作的另外两个方法some()与every()
2.方案二:for/while语句老实循环
总结原因还是对forEach方法理解不够到位
1、跳出循环用break语句就可以实现。打开hbuilder软件,创建一个点击按钮标签和用于显示循环内容的div标签:
2、在scrip标签里,创建点击触发循环的方法,循环里当循环到3的时候,用break语句跳出循环体,在button标签上添加点击myFunction()函数:
3、按下crtl+s保存后,使用浏览器打开,点击按钮可以发现按钮下方只打印出从0-2的内容,这就表示成功使用break跳出循环体了:
1. break结束循环推荐使用
2. return 直接跳出方法,如果仅仅只想结束循环不建议使用,因其副作用是,这个方法不再执行
3. 循环变量=最大值/最小值(看你循环是从高数字到低还是低到高,高到低设置成0,低到高设置成数组的length,该方法对for in语句无效)
//循环变量低到高var arr=[1,2,3,4,5,6,7]
for(var i=0i<arr.lengthi++)
{
if(arr[i]==4)
{
//break//方案1
//return//方法后续代码不执行 方案2
i=arr.length//方案3
}
}
//循环变量从高到低
var arr=[1,2,3,4,5,6,7]
for(var i=arr.length-1i>-1i--)
{
if(arr[i]==4)
{
//break//方案1
//return//方法后续代码不执行 方案2
i=-1//方案3
}
}
//for in情况
//循环变量从高到低
var arr=[1,2,3,4,5,6,7]
for(var i in arr)
{
if(arr[i]==4)
{
break//方案1
//return//方法后续代码不执行 方案2
//方案3 对此不起作用
}
}