swift map filter reduce函数

map函数使用

/*

map用于将每个数组元素通过某个方法进行转换

Swift中,map被声明成Array类的命名方法:


func map(transform: (T) -> U) -> U[]


这个方法以一个命名函数transform作为参数,transform负责把元素类型T转成类型U并返回一个类型U的数组。


在上面的事例中,TIntUString,作为转换函数传给map的是一个把Int转成String

*/

//[10,20,30,40,50] -> [10,20,30,40,50]


let moneyArr = [10,20,30,40,50]

//最笨的方法

var moneyArr1:[String] = []

for money inmoneyArr {

    let moneyStr = "\(money)"

    moneyArr1.append(moneyStr)

}

print("\(moneyArr1)")

moneyArr1.removeAll()

print("\(moneyArr1)")


//使用map函数

func addChange(a:Int) ->String {

    return "$\(a)"

}

moneyArr1 = moneyArr.map(addChange)

print("\(moneyArr1)")


//map闭包

moneyArr1 = moneyArr.map({ (money:Int) ->String in

    return "$$\(money)"

})

print("\(moneyArr1)")

//简写

moneyArr1 = moneyArr.map({"\($0)"})

print("\(moneyArr1)")


moneyArr1 = moneyArr1.sort(>)


Filter函数

/*

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

SwiftfilterArray类中的定义为:


filter(includeElement: (T) -> Bool) -> T[]


以返回truefalse的函数includeElement作为参数,对原数组元素调用includeElement时,只有返回true的元素会通过筛选

*/

var moneyArr2:[Int] = []

moneyArr2 = moneyArr.filter({ (money:Int) ->Bool in

    money > 40

})

print("\(moneyArr2)")

//简写

moneyArr2 = moneyArr.filter({$0 >20})

print("\(moneyArr2)")



Reduce函数

/*

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

接收两个参数,一个为类型U的初始值,另一个为把类型为U的元素和类型为T的元素组合成一个类型为U的值的函数。最终结果整个数组就变成了一个类型为U的值。


在事例中UTInt,初始值是0combine函数计算两个Int之和

*/


var sumMoney:Int

//初始值为0,计算0+10+20+30+40+50

sumMoney = moneyArr.reduce(0, combine: { (sum:Int, money:Int) -> Int in

    return sum + money

})

//简写

sumMoney = moneyArr.reduce(0, combine: { $0 + $1})

print("\(sumMoney)")


//初始值为2,计算2*10*20*30*40*50

sumMoney = moneyArr.reduce(2, combine: { $0 * $1})

print("\(sumMoney)")


var sumMoneyStr:String;

sumMoneyStr = moneyArr.reduce("sum = ", combine: { (sum:String, money:Int) -> String in

    return sum + "plus \(money) "

})

print(sumMoneyStr)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值