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

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


image.png

简单思考了一下,用最简单的双循环就可以解决问题,于是习惯性用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方法理解不够到位

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容