Swift的標(biāo)準(zhǔn)數(shù)組支持三個高階函數(shù):map ,filter和reduce,它們使得對數(shù)組的一些具體操作更加簡潔、優(yōu)雅、高效。
這里我們首先創(chuàng)建一個簡單的數(shù)組:
let money = [10, 20, 30, 45, 32]```
***
####map
轉(zhuǎn)換,將每個數(shù)組元素通過某個方法進(jìn)行轉(zhuǎn)換,得到一個能更方便我們使用的新的數(shù)組。
比如:把上面的money數(shù)組轉(zhuǎn)換為`["10元", "20元", "30元", "45元", "32元"]`以供UI顯示 。
var mappedArray = money.map({"($0)元"})```
這里給map傳入一個最簡形式的閉包來對原始數(shù)組money中的每一個元素進(jìn)行操作。
如果不使用map函數(shù),那么常規(guī)方式就是創(chuàng)建一個新數(shù)組,然后遍歷原始數(shù)組money,在遍歷過程中對money的每一個元素進(jìn)行操作,然后加入到新數(shù)組中,哪種方式更加優(yōu)(zhuang)雅(13)一目了然。
filter
過濾,對數(shù)組中的元素按照某種規(guī)則進(jìn)行過濾,得到一個每個元素都符合此規(guī)則的新數(shù)組。
比如:篩選出money數(shù)組中大于30的所有元素 。
var filterArray = money.filter({$0 > 30})```
這里給filter傳入一個最簡形式的閉包作為篩選條件。
***
####reduce
計算,把數(shù)組元素通過某種運算組合計算為一個值。
比如:把對money數(shù)組中的元素求和。
var sum = money.reduce(0, {$0 + $1})//第一個參數(shù)是設(shè)置的初始值,$0表示計算后的結(jié)果, $1表示數(shù)組中的每一個元素```
注:以上函數(shù)中使用的閉包都忽略了參數(shù)名,并且使用默認(rèn)參數(shù),返回類型隱式推斷,對閉包不熟悉的右轉(zhuǎn)百度,不謝~。