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