日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Swift学习之map、flatMap、filter、reduce的使用

發(fā)布時(shí)間:2025/7/14 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift学习之map、flatMap、filter、reduce的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Swift相比于Objective-C又一個(gè)重要的優(yōu)點(diǎn),它對(duì)函數(shù)式編程提供了很好的支持,Swift提供了map、filter、reduce這三個(gè)高階函數(shù)作為對(duì)容器的支持。

1.map:對(duì)數(shù)組中的每一個(gè)元素做一次處理

// 計(jì)算字符串的長(zhǎng)度 let stringArray = ["Objective-C", "Swift", "HTML", "CSS", "JavaScript"] func stringCount(string: String) -> Int {return string.count } stringArray.map(stringCount)stringArray.map({string -> Int inreturn string.count })// $0代表數(shù)組中的每一個(gè)元素 stringArray.map{return $0.count } 復(fù)制代碼

2.flatMap

1)flatMap返回后的數(shù)組中不存在nil,同時(shí)它會(huì)把Optional解包

let array = ["Apple", "Orange", "Puple", ""]let arr1 = array.map { a -> Int? inlet length = a.characters.countguard length > 0 else { return nil }return length } arr1 // [{some 5}, {some 6}, {some 5}, nil]let arr2 = array.flatMap { a-> Int? inlet length = a.characters.countguard length > 0 else { return nil}return length } arr2 // [5, 6, 5] 復(fù)制代碼

2)flatMap還能把數(shù)組中存有數(shù)組的數(shù)組(二維數(shù)組、N維數(shù)組)一同打開變成一個(gè)新的數(shù)組

let array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]let arr1 = array.map{ $0 } arr1 // [[1, 2, 3], [4, 5, 6], [7, 8, 9]]let arr2 = array.flatMap{ $0 } arr2 // [1, 2, 3, 4, 5, 6, 7, 8, 9] 復(fù)制代碼

3)flatMap也能把兩個(gè)不同的數(shù)組合并成一個(gè)數(shù)組,這個(gè)合并的數(shù)組元素個(gè)數(shù)是前面兩個(gè)數(shù)組元素個(gè)數(shù)的乘積

let fruits = ["Apple", "Orange", "Puple"] let counts = [2, 3, 5]let array = counts.flatMap { count infruits.map ({ fruit inreturn fruit + " \(count)" }) } array // ["Apple 2", "Orange 2", "Puple 2", "Apple 3", "Orange 3", "Puple 3", "Apple 5", "Orange 5", "Puple 5"] 復(fù)制代碼

3 filer:過(guò)濾,可以對(duì)數(shù)組中的元素按照某種規(guī)則進(jìn)行一次過(guò)濾

// 篩選出字符串的長(zhǎng)度小于10的字符串 let stringArray = ["Objective-C", "Swift", "HTML", "CSS", "JavaScript"] func stringCountLess10(string: String) -> Bool {return string.characters.count < 10 } stringArray.filter(stringCountLess10)stringArray.filter({string -> Bool inreturn string.characters.count < 10 })// $0表示數(shù)組中的每一個(gè)元素 stringArray.filter{return $0.characters.count < 10 }復(fù)制代碼

4 reduce:計(jì)算,可以對(duì)數(shù)組的元素進(jìn)行計(jì)算

// 將數(shù)組中的每個(gè)字符串用‘、’拼接 let stringArray = ["Objective-C", "Swift", "HTML", "CSS", "JavaScript"]func appendString(string1: String, string2: String) -> String {return string1 == "" ? string2 : string1 + "、" + string2 } // reduce方法中的第一個(gè)參數(shù)是初始值 stringArray.reduce("", appendString)stringArray.reduce("", {(string1, string2) -> String inreturn string1 == "" ? string2 : string1 + "、" + string2 })// $0表示計(jì)算后的結(jié)果, $1表示數(shù)組中的每一個(gè)元素 stringArray.reduce("", {return $0 == "" ? $1 : $0 + "、" + $1 }) 復(fù)制代碼

總結(jié)

以上是生活随笔為你收集整理的Swift学习之map、flatMap、filter、reduce的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。