[TOC] #### 1. 前言 --- JS 數(shù)組方法 every 和 some 的區(qū)別 ? 這是某位前端玩家遇到的面試題 特定場景合理的使用 JS 方法,不僅可以減少我們的代碼量,還能更輕松的閱讀別人的代碼,同時,也能更好的應(yīng)對面試 #### 2. every 和 some 相同點 --- every 和 some 都是數(shù)組迭代方法,都可以遍歷數(shù)組。它們的第一個參數(shù)都是一個閉包函數(shù),這個閉包函數(shù)接收最多接收三個參數(shù),最少接收一個參數(shù),大多數(shù)場景下,傳遞一個參數(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() 方法用于檢測數(shù)組的所有元素是否都符合指定條件,即 `全真才真` every() 方法會遍歷數(shù)組,當(dāng)檢測到有一個元素不滿足指定條件時,直接返回 false,并且停止遍歷,剩余元素不會再進行檢測 ```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() 不會對空數(shù)組進行檢測,當(dāng)數(shù)組為空時,直接返回 true ```javascript const res = [].every(item => item < 5) console.log(res); // true ``` some() 方法用于檢測數(shù)組中是否有滿足指定條件的元素,即 `一真就真` some() 方法會遍歷數(shù)組,當(dāng)檢測到有一個元素滿足指定條件時,直接返回 true,并且停止遍歷,剩余元素不會再進行檢測 ```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() 不會對空數(shù)組進行檢測,當(dāng)數(shù)組為空時,直接返回 false ``` const res = [].some(item => item < 1) console.log(res); // false ``` #### 4. every 和 some 總結(jié) --- every() 方法用于檢測數(shù)組元素是否都滿足指定條件,都滿足時才返回 true;有一個不滿足時,返回 false,剩余元素不再進行檢測。對于空數(shù)組,不會檢測,直接返回 true some() 方法用于檢測數(shù)組中是否有元素滿足指定條件,有一個滿足就返回 true;內(nèi)部遍歷數(shù)組時,遇到滿足指定條件的元素,就返回 true,剩余元素不再進行檢測,對于空數(shù)組,不會檢測,直接返回 false