swift 數組高階使用(二)

swift 數組高階使用(二)

此次主要講解swift中mapflatmapfilterreduce對數組的操做,你會發現,你的數組變得很是簡單,上代碼:swift

  • map

被一個數組調用,而且能夠接受一個閉包,返回原數組各元素通過閉包處理之後所獲得的元素組成的數組數組

// 原來的數組
let textArr = ["魔獸", "驚天魔盜團2", "X戰警:天啓"]
// 一個閉包
func addHD(movieName:String) ->String {
    let newName = movieName + "_HD"
    return newName
}
// 新數組
let newArr = textArr.map(addHD)
print(newArr)//["魔獸_HD", "驚天魔盜團2_HD", "X戰警:天啓_HD"]
// 或者能夠直接寫爲:
let newArr2 = textArr.map {(movieName:String)->String? in
    let newName = movieName + "_HD"
    return newName
}
// 固然,還有最簡單的方法
let newArr3 = textArr.map{("\($0)_HD")}
  • flatmap

flatmap和map的功能同樣,可是flatmap會自動剔除返回元素中爲nil的元素,而且返回的再也不是可選值,而是強制解析之後的非可選值。因此在flatmap和map的使用中咱們須要作一個選擇。閉包

  • filter

顧名思義,filter就是過濾的意思,能夠將數組中的全部元素遍歷進行過濾函數

let num = [1, 2, 3, 4, 5, 6, 7, 8]
let result = num.filter{$0 < 5}
print(result) // [1, 2, 3, 4]
  • reduce

ReducemapflatMapfilter 的一種擴展的形式(譯者注:後三個函數能幹嗎,reduce 就能用另一種方式實現)Reduce 的基礎思想是將一個序列轉換爲一個不一樣類型的數據,期間經過一個累加器(Accumulator)來持續記錄遞增狀態。code

// 一個很是經典的代碼,一行實現0-100的和
(0...100).reduce(0, combine: +)  // 5050

上邊的代碼首先是一個(0...100)的數組進行了reduce操做. (0, combine: +)中,0 表示一個初始值,」combine: +「表示對數組中的元素作+運算,獲得的結果賦值給0位置的這個參數基礎

相關文章
相關標籤/搜索