[Swift 开发] Swift高阶函数:Map,Filter,Reduce


1: map用于将每个数组元素通过某个方法进行转换。
    例如:
    我们用一个Int类型数组存储商品金额,想把每个金额后面添加一个字符“.00元”,把数组转成字符串数组

let numbers2 = [10, 15, 99, 66, 25];
let totalNumber2 = numbers2.map({money in "(money)元"})
print(totalNumber2)

     使用 flatMap 函数替代 map 函数的原因在于前者能够忽略可选值为 nil 的情况。例如flatMap([0,nil,1,2,nil]) 的结果是[0,1,2]。处理那些没有 city 属性的情况这 会非常有用。


2: filter用于选择数组元素中满足某种条件的元素。

    使用前面金额的例子,筛选出金额大于30元素,结果应该是[99,66]
let numbers2 = [10, 15, 99, 66, 25];
let totalNumber2 = numbers2.filter { money in money > 30}
print(totalNumber2)
   

    证明字符串中含有某个单词

let words = ["Swift","iOS","cocoa","OSX","tvOS"]
let tweet = "This is an example tweet larking about Swift"

let valid = !words.filter({tweet.containsString($0)}).isEmpty

    或者

words.contains(tweet.containsString)


3:reduce方法把数组元素组合计算为一个值。

   我们使用上面例子计算数组元素的和,结果应该为215

let numbers2 = [10, 15, 99, 66, 25];
let totalNumber2 = numbers2.reduce(200, combine: { $0+$1 })
print(totalNumber2)

  反转数组:

// $0 指累加器(accumulator),$1 指遍历数组得到的一个元素
[1, 2, 3, 4, 5].reduce([Int](), combine: { [$1] + $0 })
// 5, 4, 3, 2, 1


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值