Swift 中的過濾器

2021-09-19 09:39:21 字數 1194 閱讀 1335

swift 提供了很多方便的函式來運算元組,比如filtermap。在這篇文章裡,我將帶大家熟悉一下 filter,以及學習如何使用 map 來組合出新的陣列。

假設你有乙個陣列,接著你想要建立乙個新的陣列,這個陣列包含原陣列中所有大於 10 的元素,你可以使用下面的 for 迴圈:

let anarray = array(1...20)

var anotherarray = [int]()

for i in anarray }

print(anotherarray) // [11,12,13,14,15,16,17,18,19,20]

除了**多點,也沒什麼問題。

但是你可以嘗試使用一下filter函式,這是 swift 為每個陣列提供的乙個新式**,可以大大縮減列舉的**量:

let anotherarray = anarray.filter()

print(anotherarray)

該函式帶乙個閉包做為引數,這個閉包將陣列中的元素作為引數,並返回乙個bool結果。陣列中的每乙個元素都會執行該閉包,根據返回的結果來決定是否應存在於新的陣列中。

通過 swift 提供的閉包簡化寫法,我們可以進一步精簡:

let anotherarray = anarray.filter ()

print(anotherarray) // [11,12,13,14,15,16,17,18,19,20]

和最初的版本對比一下,是不是精簡了許多呢:)。

陣列還提供了乙個有趣的函式map,該函式同樣是帶乙個閉包作為引數並且在內部返回乙個經過轉換的元素。所以我們先篩選出陣列中所有大於 10 的元素,然後讓它們的值翻一倍:

let anarray = array(1...20)

let anotherarray = anarray.filter().map()

print(anotherarray) // [22, 24, 26, 28, 30, 32, 34, 36, 38, 40]

當然你只能在條件不太複雜時這麼做,如果情況比較複雜,這種寫法將使**變得更加難讀。大體來說就是,如果為了可讀性,那麼多寫點**還是值得的。

Swift之過濾器 filter

swift 提供了很多方便的函式來運算元組,比如 filter,map,reduce,flatmap 等.今天我們了解一下 filter 顧名思義 就是用來過濾的,這是 swift 為每個陣列提供的乙個新式 filter 用於選擇陣列元素中滿足某種條件的元素。假設有乙個陣列,接著想要建立乙個新的陣列...

過濾器(6) 過濾器的攔截

本系列部落格彙總在這裡 過濾器彙總 我們來做個測試,寫乙個過濾器,指定過濾的資源為 index.jsp,然後我們在瀏覽器中直接訪問 index.jsp,你會發現過濾器執行了!但是,當我們在 helloservlet 中使用伺服器端的跳轉request.getrequestdispathcer ind...

Vue 過濾器案例(全域性過濾器和區域性過濾器)

doctype html en utf 8 viewport content width device width,initial scale 1.0 js vue 2.4.0 js script 過濾器 title head 兩個過濾器的名稱都為msgformat,但是控制不同作用,乙個是全域性的...