使用高阶函数过滤一个数组中的nil可以有两种方法:filterflatMap

filter方法如下代码所示:

let array: [Int?] = [1, 2, 3, 5, nil, 9]

let result = array.filter { element in
    element != nil
}

print(result)		// [Optional(1), Optional(2), Optional(3), Optional(5), Optional(9)]

flatMap方法如下代码所示:

let array: [Int?] = [1, 2, 3, 5, nil, 9]
let result: [Int] = array.flatMap {
    $0
}

print(result)		// [1, 2, 3, 5, 9]

从输出可以看出,filter返回的仍然是一个Optional数组,而flatMap返回的是一个非Optional数组。一般推荐使用第二种方法。