Map vs Flatmap trong swift
–Các运算符chuyểnđổi数组trong swiftgồmcó:地图,平面图,归约。
- Flatmapsẽfilterloạibỏnil
let strs:[String?] = [“ a”,nil,“ b”,nil,“ c”]
令result = strs。 地图 {$ 0}
print(result)// a nil b nil c
let strs:[String?] = [“ a”,nil,“ b”,nil,“ c”]
令result = strs。 flatMap {$ 0}
打印(结果)// abc
让分数= [“ 1”,“ 2”,“三”,“ 4”]
让scoresInt =分数。 映射 {Int($ 0)}
print(scoresInt)// 1 2无4
让分数= [“ 1”,“ 2”,“三”,“ 4”]
让scoresInt =分数。 flatMap {Int($ 0)} //检查解析为nil
print(scoresInt)// 1 2 4
2. Flatmap :init方法
视频:解析数据->模型,过滤器无解析错误。
fileprivate struct用户{
let id:整数
命名:字符串
初始化?(字典:[String:Any]){
守护
让id = dictionary [“ id”]为? 诠释
让name = dictionary [“ name”]为? 串
其他{
返回零
}
self.id = id
self.name =名称
}
}
var users =词典。 flatMap (User.init)
3.Làmphẳng数组,chuyển2chiều-> 1chiều:dùngflatMap, 加入 。
让arrayOfArrays = [[1,1],[2,2],[3,3]]
让arrMultiple2 = arrayOfArrays。 映射 {数组在
返回数组。 映射 {中的整数
返回整数* 2
}
} // [[2,2],[4,4],[6,6]]
var flattened1 = arrayOfArrays。 flatMap {数组在
返回数组。 映射 {中的整数
返回整数* 2
}
} // 2 2 4 4 6 6
var flattened2 = Array(arrMultiple2。join())// 2 2 4 4 6 6
var flattend3 = arrayOfArrays。 flatMap {$ 0} // 1 1 2 2 3 3
//Nhân2
var flattend4 = arrayOfArrays。 flatMap {$ 0.map {$ 0 * 2}} // 2 2 4 4 6 6