在leetcode上刷题的时候踩的坑,题目是这样的
![关于[JS] forEach循环return无法跳出的踩坑和解决方案](https://img.niaorui.com/blogimg/20251228/cfd34df4900547fab6409aa5e41fb745.jpg)
简单思考了一下,用最简单的双循环就可以解决问题,于是习惯性用forEach遍历了两次
var twoSum = function(nums, target) {
nums.forEach(function(item,index){
nums.forEach(function(value,index2){
if(value != item){
var sum = item+value;
if( sum === target ){
return [index,index2];
}
}
});
})
};
结果发现函数返回值是undefined
百度了一下,发现是由于forEach多次执行回调函数,回调函数中使用return没法直接终止forEach,只能终止单次的回调。所以return语句在forEach内部是无法跳出循环的。
解决方案:
1.方案一:js针对数组操作的另外两个方法some()与every()
some():当内部return true时跳出整个循环
every():当内部return false时跳出整个循环
2.方案二:for/while语句老实循环
总结缘由还是对forEach方法理解不够到位
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...




