Swift的标准数组支持三个高阶函数:map
,filter
和reduce
,它们使得对数组的一些具体操作更加简洁、优雅、高效。
这里我们首先创建一个简单的数组:
let money = [10, 20, 30, 45, 32]```
***
####map
转换,将每个数组元素通过某个方法进行转换,得到一个能更方便我们使用的新的数组。
比如:把上面的money数组转换为`["10元", "20元", "30元", "45元", "32元"]`以供UI显示 。
var mappedArray = money.map({"($0)元"})```
这里给map传入一个最简形式的闭包来对原始数组money中的每一个元素进行操作。
如果不使用map函数,那么常规方式就是创建一个新数组,然后遍历原始数组money,在遍历过程中对money的每一个元素进行操作,然后加入到新数组中,哪种方式更加优(zhuang)雅(13)一目了然。
filter
过滤,对数组中的元素按照某种规则进行过滤,得到一个每个元素都符合此规则的新数组。
比如:筛选出money数组中大于30的所有元素 。
var filterArray = money.filter({$0 > 30})```
这里给filter传入一个最简形式的闭包作为筛选条件。
***
####reduce
计算,把数组元素通过某种运算组合计算为一个值。
比如:把对money数组中的元素求和。
var sum = money.reduce(0, {$0 + $1})//第一个参数是设置的初始值,$0表示计算后的结果, $1表示数组中的每一个元素```
注:以上函数中使用的闭包都忽略了参数名,并且使用默认参数,返回类型隐式推断,对闭包不熟悉的右转百度,不谢~。
网友评论