Swift 高阶函数

map

可以对数组中的每个元素做一次处理,就是遍历的作用,map接受一个闭包作为参数,然后遍历数组,对数组的每一个元素来一次闭包的操作。相当于数组中所有元素做一次映射。
map可以对一个集合类型的所有元素做映射, 不会修改实例值,而是做一个拷贝。

flatMap:

flatMap 依然会遍历数组的元素,并对这些元素执行闭包中定义的操作
与Map不同的是,它对最终的结果进行了所谓的“降维”操作。 本来原始数组是一个二维的, 但经过 flatMap 之后,它变成一维的了
flatMap返回后的数组中不存在nil,同时它会把Optional解包
flatMap可以把两个不同的数组合并成一个数组


let values = [[1, 2, 4], [6], [12, 10]]

let result = values.map{$0}
print(result)// [[1, 2, 4], [6], [12, 10]]

let result2 = values.compactMap{$0}
print(result2) // [[1, 2, 4], [6], [12, 10]]

//降维
var result3 = values.flatMap{$0}
print(result3) // [1, 2, 4, 6, 12, 10]

//过滤nil, Optional解包
let array = ["1", "two", "3", "4", "five", "6"]
let map:[Int?] = array.map{ str in
    Int(str)
}
print(map) // [Optional(1), nil, Optional(3), Optional(4), nil, Optional(6)]

let compactMaps: [Int] = array.compactMap{Int($0)}
print(compactMaps) //[1, 3, 4, 6]

//flatMap' is deprecated: Please use compactMap(_:) for the case where closure returns an optional value.
let flatMaps: [Int] = array.flatMap{Int($0)}
print(flatMaps) //[1, 3, 4, 6]

filter函数

//条件判断
var values = [1, 2, 4, 6, 12, 10]
values = values.filter{$0 > 7}
print(values) //[12, 10]

//筛选多维数组中的数据,flatMap配合filter使用
let arrays = [[1, 2, 4], [6], [12, 10]]
let flatMap = arrays.flatMap{$0.filter{$0 % 2 == 0}}.sorted()
print(flatMap) //[2, 4, 6, 10, 12]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值