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