DEV Community

Cover image for TS - 淺談 some 和 every 方法
FakeStandard
FakeStandard

Posted on • Edited on

TS - 淺談 some 和 every 方法

淺談 Typescript 中的 some 和 every 方法

當你想從陣列中檢查陣列內部是否有符合指定條件的元素,並且只回傳布林值時,你可以考慮這兩種方法—someevery

some
some 方法用來檢查陣列中的元素是否符合指定條件,若找到一個元素符合條件,就回傳 true,反之,陣列中沒有任何元素符合條件則返回 false ;而且只要找到一個符合條件,就會停止檢查後續陣列,直接返回結果。

const arr = [1, 2, 3]

const res = arr.some(val => {
    console.log(val)

    return val === 2 // condition
})

console.log(res)

// output
// 1
// 2
// true

const res = arr.some(val => {
    console.log(val)

    return val === 5 // condition
})

console.log(res)

// output
// 1
// 2
// 3
// false
Enter fullscreen mode Exit fullscreen mode

其概念是每次迭代陣列時,some 方法會為每個元素調用 predicate 函數,該函數會判斷該元素是否符合指定條件,當條件符合時回傳 true 否則回傳 false,迭代會持續進行直到該函數返回 true,或者直到迭代結束。

其實跟上面的意思差不多,只是要強調真正執行檢查的是 predicate 函數,而非 some 特異功能。

every
既然講了 some ,那就得說說 every 這個方法,它跟 some 很相似,every 方法會檢查陣列中全部的元素是否都符合條件,全部符合條件才回傳 true,只要有一個不符合就會回傳 false;一樣只要有一個不符合條件,就會停止檢查後續陣列並返回結果。

const arr = [18, 20, 26, 30, 35]

const res = arr.every(val => {
    console.log(val)

    return val > 10 // condition

})

console.log(res)

// output
// 18
// 20
// 26
// 30
// 35
// true

const res = arr.every(val => {
    console.log(val)

    return val > 20 // condition
})

// output
// 18
// false
Enter fullscreen mode Exit fullscreen mode

其概念與 some 方法也相似,每次迭代陣列時為每個元素調用 predicate 函數,該函數會判斷該元素是否符合指定條件,當條件符合時回傳 true 否則回傳 false,當 predicate 函數回傳 false 時,every 方法會立刻返回 false,或者直到迭代結束然後返回 true。


Thanks for reading the article 🌷 🌻 🌼

If you like it, please don't hesitate to click heart button ❤️
or follow my GitHub ⭐ I'd appreciate it.


Top comments (0)