數(shù)組是我們在編程過程中最常用到的一種數(shù)據(jù)結(jié)構(gòu),swift中的Array與oc中的NSArray相比抢蚀,NSArray只能存儲對象镀层,像是Int就不能直接存在NSArray中,而Array可以存儲任意類型皿曲,雖然就目前為止Array提供的功能還沒有NSArray全面強大唱逢,但swift強大的類型推斷特性,給Array數(shù)組的操作帶來很大的簡化屋休,今天寫一下swift中關于Array數(shù)組操作的三個高級函數(shù):map坞古、filter、reduce劫樟。當作自己的學習筆記
對于數(shù)組的處理痪枫,如果想要對數(shù)組中的所有元素進行統(tǒng)一的處理,你會想到什么方法叠艳,對數(shù)組進行遍歷奶陈,然后再進行相應的操作處理,之前我也會直接就這樣做虑绵,但swift提供了三個關于數(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
這樣三個關于Array操作的函數(shù)就介紹完了关带,在合適的場景下運用這些高級一點處理方法豫缨,會有很好的效果端朵。