map函数使用
/*
map用于将每个数组元素通过某个方法进行转换
在Swift中,map被声明成Array类的命名方法:
func map(transform: (T) -> U) -> U[]
这个方法以一个命名函数transform作为参数,transform负责把元素类型T转成类型U并返回一个类型U的数组。
在上面的事例中,T为Int,U为String,作为转换函数传给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用于选择数组元素中满足某种条件的元素。
Swift中filter在Array类中的定义为:
filter(includeElement: (T) -> Bool) -> T[]
以返回true或false的函数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的值。
在事例中U和T是Int,初始值是0,combine函数计算两个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)