關于[JS] forEach循環(huán)return無法跳出的踩坑和解決方案

在leetcode上刷題的時候踩的坑,題目是這樣的


image.png

簡單思考了一下,用最簡單的雙循環(huán)就可以解決問題,于是習慣性用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];
                    }
                }
            });
        })
    };

結果發(fā)現(xiàn)函數(shù)返回值是undefined
百度了一下,發(fā)現(xiàn)是因為forEach多次執(zhí)行回調函數(shù),回調函數(shù)中使用return沒法直接終止forEach,只能終止單次的回調。所以return語句在forEach內部是無法跳出循環(huán)的。

解決方案:
1.方案一:js針對數(shù)組操作的另外兩個方法some()與every()

some():當內部return true時跳出整個循環(huán)

every():當內部return false時跳出整個循環(huán)

2.方案二:for/while語句老實循環(huán)

總結原因還是對forEach方法理解不夠到位

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容