swift自动为闭包提供参数名缩写功能,可以直接通过$0和$1等来表示闭包中的第一个第二个参数,并且对应的参数类型会根据函数类型来进行判断。并且in关键字也可以省略,只写函数体就可以了。
例如
arr.sorted { (a, b) in
return a < b
}
相当于
arr.sorted { $0 < $1 }
1.sort:数组排序
例如
let arr = [1,4,2,5,3]
let sortArr = arr.sorted { $0 < $1 }
print(sortArr)
对model数组排序
let sortArr = books.sorted { $0.id < $1.id }
print(sortArr)
2.filter:过滤数组中的元素,闭包里只写过滤的条件即可。
例如
let arr = [1,4,2,5,3]
let filterArr = arr.filter { $0 == 1 }
print(filterArr)
使用filter过滤viewController
if let viewControllers = navigationController?.viewControllers {
navigationController?.viewControllers = viewControllers.filter {
$0.isKind(of: GenerateEnterPasswordController.self) == false
}
}
3.forEach:数组遍历
let arr = [1,4,2,5,3]
arr.forEach { print($0) }
4.map:数组中的每一个元素都做一次指定操作之后,返回一个新的数组
let arr = [1,4,2,5,3]
let mapArr = arr.map { $0 - 1 }
5.flatMap:数组中的每一个元素都做一次指定操作之后,返回一个新的数组B。(指定此操作必须返回一个数组A,数组A将被添加到数组B中)。
let arr = [1,4,2,5,3]
let flatMapArr = arr.flatMap { i in
return [(i, 0)]
}
print(flatMapArr)
6.dropFirst:除去第一个元素以外的部分元素
dropFirst(n):除去前n个元素以外的部分元素
let arr = [1,4,2,5,3]
arr.dropFirst().forEach { print($0) }
7.dropLast:除去倒数第一个元素以外的部分元素
dropLast(n):除去倒数后n个元素以外的部分元素
let arr = [1,4,2,5,3]
arr.dropLast(3).forEach { print($0) }