swift map flatMap Filter Reduc
2019-03-27 本文已影响0人
有理想有暴富的小青年
1、Map(映射)
map函数 类似for循环做的一些事 只是以闭包的形式表达出来 map闭包函数的功能就是对数组中的每一项进行遍历,然后通过映射规则对数组中的每一项进行处理,最终的返回结果是处理后的数组(以一个新的数组形式出现)。当然,原来数组中的元素值是保持不变的,这就是map闭包函数的用法与功能。

2、Filter (过滤器) 用法和map形式一样就是返回值是bool 函数体加过滤条件

3、Reduce 求和

4、sorted (排序)

总结 map filter reduce 函数 可将后面函数体 看做闭包 省略其形参和返回体和in 只写实现如下

map 、flatMap、 compactMap 区别
map 映射的是本身是什么类型新的数组就是什么类型 不会解包
flatMap 会把optional类型解包 并且会过滤掉 nil 还可把多维数组展开 合并成一个数组(遇到nil类型除外 eg [[1,3],[2,5],nil]) ps swift 4.1之后flatmap会报警告(解决方法下篇文章给出)
compactMap swift4.1以后出现的新特性 为了解决多维数组nil问题 功能类似flatmap
遇到 [[1,3],[2,5],nil] 这种数组 目前方法是先用compactMap进行去除nil 再进行flatmap展开
哪位大神有好的方法 望不吝赐教!