[TOC] #### 1. 前言 --- JS 數(shù)組方法 every 和 some 的區(qū)別 ? 這是某位前端玩家遇到的面試題 特定場(chǎng)景合理的使用 JS 方法,不僅可以減少我們的代碼量,還能更輕松的閱讀別人的代碼,同時(shí),也能更好的應(yīng)對(duì)面試 #### 2. every 和 some 相同點(diǎn) --- every 和 some 都是數(shù)組迭代方法,都可以遍歷數(shù)組。它們的第一個(gè)參數(shù)都是一個(gè)閉包函數(shù),這個(gè)閉包函數(shù)接收最多接收三個(gè)參數(shù),最少接收一個(gè)參數(shù),大多數(shù)場(chǎng)景下,傳遞一個(gè)參數(shù)就足夠使用了。它們的返回值都是布爾值 + item 必寫參數(shù), 當(dāng)前元素 + index 可選參數(shù), 當(dāng)前元素的索引值 + array 可選參數(shù), 當(dāng)前遍歷的數(shù)組,也就是 arr ```javascript const arr = [2, 4, 6, 8, 10] arr.every((item, index, array) => { return item < 5 }) arr.some((item, index, array) => { return item < 5 }) ``` #### 3. every 和 some 的區(qū)別 --- every() 方法用于檢測(cè)數(shù)組的所有元素是否都符合指定條件,即 `全真才真` every() 方法會(huì)遍歷數(shù)組,當(dāng)檢測(cè)到有一個(gè)元素不滿足指定條件時(shí),直接返回 false,并且停止遍歷,剩余元素不會(huì)再進(jìn)行檢測(cè) ```javascript const arr = [2, 4, 6, 8, 10] const res1 = arr.every(item => item < 5) // false const res2 = arr.every(item => item < 20) // true ``` 特別注意: every() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè),當(dāng)數(shù)組為空時(shí),直接返回 true ```javascript const res = [].every(item => item < 5) console.log(res); // true ``` some() 方法用于檢測(cè)數(shù)組中是否有滿足指定條件的元素,即 `一真就真` some() 方法會(huì)遍歷數(shù)組,當(dāng)檢測(cè)到有一個(gè)元素滿足指定條件時(shí),直接返回 true,并且停止遍歷,剩余元素不會(huì)再進(jìn)行檢測(cè) ```javascript const arr = [2, 4, 6, 8, 10] const res1 = arr.some(item => item < 1) // false const res2 = arr.some(item => item < 5) // true ``` 特別注意: some() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè),當(dāng)數(shù)組為空時(shí),直接返回 false ``` const res = [].some(item => item < 1) console.log(res); // false ``` #### 4. every 和 some 總結(jié) --- every() 方法用于檢測(cè)數(shù)組元素是否都滿足指定條件,都滿足時(shí)才返回 true;有一個(gè)不滿足時(shí),返回 false,剩余元素不再進(jìn)行檢測(cè)。對(duì)于空數(shù)組,不會(huì)檢測(cè),直接返回 true some() 方法用于檢測(cè)數(shù)組中是否有元素滿足指定條件,有一個(gè)滿足就返回 true;內(nèi)部遍歷數(shù)組時(shí),遇到滿足指定條件的元素,就返回 true,剩余元素不再進(jìn)行檢測(cè),對(duì)于空數(shù)組,不會(huì)檢測(cè),直接返回 false