您好,登錄后才能下訂單哦!
這篇“es6中some和every方法怎么使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“es6中some和every方法怎么使用”文章吧。
es6中的數組方法some()和every()都接收一個回調函數作為參數,該回調函數又接收三個參數,分別是數組元素、數組元素的索引、調用some或every方法的數組本身。它們的區別就是:
some方法用于判斷數組中是否存在某個符合判斷條件的元素,判斷在回調函數的函數體內完成,并由回調函數返回一個布爾值。如果回調函數在某次返回了true,則整個some方法返回true,且結束遍歷。
every方法用于判斷數組中是否任意一個元素都符合判斷條件,判斷同樣是在回調函數的函數體內完成,并由回調函數返回一個布爾值。如果回調函數在某次返回了false,則整個every方法返回false,且結束遍歷。
注意:some和every方法都不會改變原來的數組。
圖1
圖2
分析圖1可知,在每次執行回調函數時,回調函數返回的布爾值都為false,因此some方法不會提前退出遍歷,因此會把數組中的每一個元素都遍歷一次。從圖2可知,在判斷第一個元素是否符合條件時,回調函數就返回了true,則整個some方法返回true,直接停止了遍歷,不再判斷后面的元素。
圖3
圖4
根據前面的描述:every方法會在回調函數返回false時直接中止遍歷,因此得到圖3和圖4的執行結果。
上面的4個例子都是在回調函數主動返回布爾值,即調用了return語句的情況下分析的。下面來看如果回調函數沒有主動返回布爾值時的表現:
對于some方法:
圖5
對于every方法:
圖6
分析圖5和圖6,可以看到在回調函數沒有主動返回布爾值的情況下,some方法沒有提前停止元素遍歷,而every方法在第一個元素后就停止遍歷了;some方法提前停止遍歷的條件是return true,every方法提前停止遍歷的條件時return false;也就是說回調函數默認會返回false;
下面再來看關于回調函數的一種特殊情況:
對于some方法:
圖7
對于every方法:
圖8
分析圖7和圖8,在回調函數同樣沒有return語句的情況下,執行結果為什么與第3點描述的不一樣?即為什么這里能返回正確的結果?實際上,這里和第3的區別在于回調函數雖然沒有return語句,但同時也沒有大括號{}包含函數體。這種情況下,實際上和 {return xxx}的效果是一樣的,回調函數其實是有主動返回值的。
以上就是關于“es6中some和every方法怎么使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。