關(guān)于Swift的騷操作(一)之數(shù)組的操作:三個高階函數(shù)(map、filter、reduce)

數(shù)組是我們在編程過程中最常用到的一種數(shù)據(jù)結(jié)構(gòu),swift中的Array與oc中的NSArray相比,NSArray只能存儲對象,像是Int就不能直接存在NSArray中,而Array可以存儲任意類型,雖然就目前為止Array提供的功能還沒有NSArray全面強大,但swift強大的類型推斷特性,給Array數(shù)組的操作帶來很大的簡化,今天寫一下swift中關(guān)于Array數(shù)組操作的三個高級函數(shù):map、filter、reduce。當作自己的學(xué)習筆記

對于數(shù)組的處理,如果想要對數(shù)組中的所有元素進行統(tǒng)一的處理,你會想到什么方法,對數(shù)組進行遍歷,然后再進行相應(yīng)的操作處理,之前我也會直接就這樣做,但swift提供了三個關(guān)于數(shù)組操作的三個高級操作,用這三個函數(shù)去處理數(shù)組,會使得自己的代碼逼格很高,而且非常簡便,并且在數(shù)據(jù)量很大的情況下,也很提高執(zhí)行的速度。

(一)map

它是用于將數(shù)組中每一個元素進行統(tǒng)一的類型轉(zhuǎn)換處理,返回的是一個新的數(shù)組

一個例子就可以讓大家很直觀的了解它的用法:

let numbers = [3, 1, 5, 6, 10, 9]

現(xiàn)要將一個數(shù)組(存儲int)每個元素變成字符串并且后面拼接一個“+”號,這樣我們就可以用map進行處理

 let newArr = numbers.map {"\($0)+"}

在swift中可以用$0來代替閉包中的參數(shù),第一個參數(shù)為$0,第二個為$2,以此類推,所以這里面$0可以理解為numbers中的每一個元素值。

簡單的一行代碼就完成了需求,很簡單,只要大家知道了有著沖處理方法,很快就能熟練運用。

(二)Filter

這是用于對數(shù)組中的元素進行篩選的,返回的也是一個新的數(shù)組

同樣完成一個例子:將上面的numbers數(shù)組選出其中大于5的數(shù)

 let newArr = numbers.filter {$0 > 5}

(三)Reduce

reduce是把數(shù)組中的每一個元素合成一個元素的處理,返回值是一個值類型

一個例子了解他的用法:計算numbers數(shù)組的所有元素的和

let number1 = numbers.reduce(0, {$0 + $1})

其中0是初始值,$0為計算結(jié)果值,$1為數(shù)組元素值

也可以運用reduce處理數(shù)組中每一個元素的乘積

 let number2 = numbers.reduce(1, {$0 * $1})

與算總和不同的是這里面的初始值是1

這樣三個關(guān)于Array操作的函數(shù)就介紹完了,在合適的場景下運用這些高級一點處理方法,會有很好的效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容