首先,咱们说说 map函数如何使用。
1 2 3 | let numbers = [1,2,3,4] let result = numbers.map { $0 + 2 } print(result) // [3,4,5,6] |
map 方法接受一个闭包作为参数,然后它会遍历整个 numbers 数组,并对数组中每一个元素执行闭包中定义的操作。相当于对数组中的所有元素做了一个映射。比如咱们这个例子里面的闭包是讲所有元素都加 2。这样它产生的结果数据就是 [3,4,5,6]。
初步了解之后,我们来看一下 map的定义:
1 2 | func map (@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T] |
咱们抛开一些和关键逻辑无关的修饰符 @noescape,throws这些,在整理一下就是这样:
1 2 | func map (transform: (Self.Generator.Element) -> T) rethrows -> [T] |
map 函数接受一个闭包,这个闭包的定义是这样的:
1 | (Self.Generator.Element) -> T |
它接受 Self.Generator.Element类型的参数,这个类型代表数组中当前元素的类型。而这个闭包的返回值,是可以和传递进来的值不同的。比如我们可以这样:
1 2 | let stringResult = numbers.map { "No. \($0)" } // ["No. 1", "No. 2", "No. 3", "No. 4"] |
这次我们在闭包装把传递进来的数字拼接到一个字符串中,然后返回一个组数,这个数组中包含的数据类型,就是我们拼接好的字符串。
写法一:
let num: Int? =3
let resulttt = num.map({
return $0 *2
})
print(resulttt ??99)
写法二:
let resulrrr = num.map { (hhh) ->Intin
return hhh*5
}
print(resulrrr ??99)
写法三:
let num: Int? =3
let resulttt = num.map{
return $0 *2
}
print(resulttt ??99)
// map 函数用法
let moneyArray = [12,25,1,35,27]
var stringsArray : [String] = []
for money in moneyArray {
stringsArray.append("\(money)$")
}
print(stringsArray)
var ggggArray : [String] = []
ggggArray = moneyArray.map({
"\($0)¥"
})
print(ggggArray)
let num: Int? = 3
let resulttt = num.map{
return $0 * 2
}
print(resulttt ?? 99)
let resulrrr = num.map { (hhh) -> Int in
return hhh*5
}
print(resulrrr ?? 99)
// filter 函数用法,过滤符合某一条件的元素集合
var filterArray :[Int] = []
filterArray = moneyArray.filter { (temInt) -> Bool in
return temInt>30
}
print(filterArray)
var filterArray1 :[Int] = []
filterArray1 = moneyArray.filter {
return $0>30
}
print(filterArray1)
// reduce 函数用法,集合的元素执行某一运算操作的结果,或和或积等,并且初始值参与运算中
var sum = 0
sum = moneyArray.reduce(0, {$0 + $1})
print(sum)
let numbers1 = [1, 2, 3, 4]
let numberSum = numbers1.reduce(1, { x, y in
x + y
})
print(numberSum)
还有flatMap==参考:http://www.cocoachina.com/swift/20160527/16467.html