Swift 的一些高阶函数 map、filter、reduce、flatMap、compactMap
xxxixxxx

map 对集合里的每一个元素进行操作,然后返回个新的集合

1
2
3
4
let numbers = [1, 3, 5, 7, 9]
/// 对集合里的每一个元素进行操作,然后返回个新的集合
print(numbers.map { $0 * 10 })
// [10, 30, 50, 70, 90]

filter 过滤集合里面的每一个元素,返回一个满足条件的新的集合

1
2
3
4
let numbers = [1, 3, 5, 7, 9]
/// 过滤集合里面的每一个元素,返回一个满足条件的新的集合
print(numbers.filter { $0 > 5 })
// [7, 9]

reduce 对集合里面的每一个元素 作用在当前累计的结果上

1
2
3
4
/// 对集合里面的每一个元素 作用在当前累计的结果上
let abc = ["a", "b", "c"]
print(abc.reduce("100") { $0 + ($1 + "kk") })
// 100akkbkkckk

flatMap 集合内的元素全是集合,那么把元素拆成同一级 放在一个新的集合里

1
2
3
4
5
6
7
8
9
let list = [[1, 2, 3], [4, 5], [7]]
/// 集合内的元素全是集合,那么把元素拆成同一级 放在一个新的集合里
print(list.flatMap { $0 })
// [1, 2, 3, 4, 5, 7]

/// 只会拆一层
let list1 = [[1, 2, 3], [4, 5], [7], [[8], [9]]]
print(list1.flatMap { $0 })
// [1, 2, 3, 4, 5, 7, [8], [9]]

compactMap 过滤空值

1
2
3
4
let names: [String?] = ["am",nil,"qw","er",nil]
/// 过滤空值
print(names.compactMap{ $0 })
//["am", "qw", "er"]
  • Post title:Swift 的一些高阶函数 map、filter、reduce、flatMap、compactMap
  • Post author:xxxixxxx
  • Create time:2020-11-17 00:00:00
  • Post link:https://xxxixxx.github.io/2020/11/17/100-Swift-的一些高阶函数-map-filter-reduce-flatMap-compactMap/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments