SwiftNote-高阶函数

283 阅读1分钟

map

对于原始集合里的每一个元素,以一个变化后的元素替换之形成一个新的集合

map

let numbers = [1, 2, 4, 5, 10]
print(numbers.map { $0 * 10 }) 
// [10, 20, 40, 50, 100]  

filter

对于原始集合里的每一个元素,通过判定来将其丢弃或者放进新的集合

filter

let numbers = [1, 2, 4, 5, 10] 
print(numbers.filter { $0 > 4 })
// [5, 10] 

reduce

对于原始集合里的每一个元素,作用于当前累计的结果上

reduce

let numbers = [1, 2, 4, 5, 10] 
print(numbers.reduce(100, { $0 + $1 }))
// 122

flatMap

对于元素是集合的集合,可以得到单级的集合

flatMap

let arrayNumbers = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(arrayNumbers.flatMap{ $0.map{ $0 * 10 } })
// [10, 20, 30, 40, 50, 60, 70, 80, 90]

compactMap

过滤空值

compactMap

let names: [String?] = ["zhangsan", nil, "lisi", "wangwu", nil, "zhaoliu"]
print(names.count) // 6
print(names.compactMap{ $0 })
// ["zhangsan", "lisi", "wangwu", "zhaoliu"]
print(names.compactMap{ $0?.count })
// [8, 4, 6, 7]