es6中some和every方法使用簡單示例
文章略長,但比較簡單。
es6中的數(shù)組方法some()和every()都接收一個回調(diào)函數(shù)作為參數(shù),該回調(diào)函數(shù)又接收三個參數(shù),分別是數(shù)組元素、數(shù)組元素的索引、調(diào)用some或every方法的數(shù)組本身。它們的區(qū)別就是:
some方法用于判斷數(shù)組中是否存在某個符合判斷條件的元素,判斷在回調(diào)函數(shù)的函數(shù)體內(nèi)完成,并由回調(diào)函數(shù)返回一個布爾值。如果回調(diào)函數(shù)在某次返回了true,則整個some方法返回true,且結(jié)束遍歷。
every方法用于判斷數(shù)組中是否任意一個元素都符合判斷條件,判斷同樣是在回調(diào)函數(shù)的函數(shù)體內(nèi)完成,并由回調(diào)函數(shù)返回一個布爾值。如果回調(diào)函數(shù)在某次返回了false,則整個every方法返回false,且結(jié)束遍歷。
注意:some和every方法都不會改變原來的數(shù)組。
1、some方法舉例如下圖所示:
圖1

圖2

分析圖1可知,在每次執(zhí)行回調(diào)函數(shù)時,回調(diào)函數(shù)返回的布爾值都為false,因此some方法不會提前退出遍歷,因此會把數(shù)組中的每一個元素都遍歷一次。從圖2可知,在判斷第一個元素是否符合條件時,回調(diào)函數(shù)就返回了true,則整個some方法返回true,直接停止了遍歷,不再判斷后面的元素。
2、every方法舉例:
圖3

圖4

根據(jù)前面的描述:every方法會在回調(diào)函數(shù)返回false時直接中止遍歷,因此得到圖3和圖4的執(zhí)行結(jié)果。
3、回調(diào)函數(shù)沒有(主動)返回
上面的4個例子都是在回調(diào)函數(shù)主動返回布爾值,即調(diào)用了return語句的情況下分析的。下面來看如果回調(diào)函數(shù)沒有主動返回布爾值時的表現(xiàn):
對于some方法:
圖5

對于every方法:
圖6

分析圖5和圖6,可以看到在回調(diào)函數(shù)沒有主動返回布爾值的情況下,some方法沒有提前停止元素遍歷,而every方法在第一個元素后就停止遍歷了;some方法提前停止遍歷的條件是return true,every方法提前停止遍歷的條件時return false;也就是說回調(diào)函數(shù)默認(rèn)會返回false;
4、特殊情況
下面再來看關(guān)于回調(diào)函數(shù)的一種特殊情況:
對于some方法:
圖7

對于every方法:
圖8

分析圖7和圖8,在回調(diào)函數(shù)同樣沒有return語句的情況下,執(zhí)行結(jié)果為什么與第3點描述的不一樣?即為什么這里能返回正確的結(jié)果?實際上,這里和第3的區(qū)別在于回調(diào)函數(shù)雖然沒有return語句,但同時也沒有大括號{}包含函數(shù)體。這種情況下,實際上和 {return xxx}的效果是一樣的,回調(diào)函數(shù)其實是有主動返回值的。
總結(jié)一下,有三個重要的點:
(1)some和every方法提前停止遍歷的前提(分別是回調(diào)函數(shù)return true和return false);
(2)回調(diào)函數(shù)沒有主動返回布爾值時,默認(rèn)都是返回false;
(3)回調(diào)函數(shù)的函數(shù)體只有一個語句且沒有{}包含,實際上和有{}包含且有return語句是相同的。
到此這篇關(guān)于es6中some和every方法使用的文章就介紹到這了,更多相關(guān)es6 some和every方法使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript/Js腳本處理html元素的自定義屬性解析(親測兼容Firefox與IE)
這篇文章主要是對JavaScript/Js腳本處理html元素的自定義屬性解析(親測兼容Firefox與IE)進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-11-11
JS實現(xiàn)textarea通過換行或者回車把多行數(shù)字分割成數(shù)組并且去掉數(shù)組中空的值
這篇文章主要介紹了JS實現(xiàn)textarea通過換行或者回車把多行數(shù)字分割成數(shù)組并且去掉數(shù)組中空的值的相關(guān)資料,需要的朋友可以參考下2018-10-10
淺析Javascript ES6新增值比較函數(shù)Object.is
在Javascript中判斷相等是很常見的,常用的判斷有“==”,“===”,“!=”,“!==”,今天這篇文章我們來學(xué)習(xí)ES6中的一個方法Object.is(),有需要的可以參考學(xué)習(xí)。2016-08-08
Layer組件多個iframe彈出層打開與關(guān)閉及參數(shù)傳遞的方法
今天小編就為大家分享一篇Layer組件多個iframe彈出層打開與關(guān)閉及參數(shù)傳遞的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JavaScript中l(wèi)ayer關(guān)閉指定彈出窗口方法總結(jié)
這篇文章主要給大家介紹了關(guān)于JavaScript中l(wèi)ayer關(guān)閉指定彈出窗口方法的相關(guān)資料,layer是layui的一個彈出層組件,但是可以作為獨立組件使用,需要的朋友可以參考下2023-10-10
Javascript面試經(jīng)典套路reduce函數(shù)查重
reduce函數(shù),是ECMAScript5規(guī)范中出現(xiàn)的數(shù)組方法.下面通過本文給大家分享Javascript面試經(jīng)典套路reduce函數(shù)查重,需要的朋友參考下吧2017-03-03
elemetUi 組件--el-upload實現(xiàn)上傳Excel文件的實例
這篇文章主要介紹了elemetUi 組件--el-upload實現(xiàn)上傳Excel文件的實例的相關(guān)資料,希望通過本文大家能夠?qū)崿F(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10

