一维数组的使用
let numbers = [1, 2, 3, nil, 4, 5, 6, 7]
let maped = numbers.map { $0 }
let flatMapped = numbers.flatMap { $0 }
let compactMapped = numbers.compactMap { $0 }
print(maped)
//[Optional(1), Optional(2), Optional(3), nil, Optional(4), Optional(5), Optional(6), Optional(7)]
print(flatMapped)
//[1, 2, 3, 4, 5, 6, 7]
print(compactMapped)
//[1, 2, 3, 4, 5, 6, 7]
将数据进行接包操作,过滤nil
map不可以过滤nil- flatMap可以过滤nil
- compactMap可以过滤nil
二维数组的使用
let numbers = [[1, 2, 3, nil], [4, 5, 6], [7]]
let maped = numbers.map { $0 }
let flatMapped = numbers.flatMap { $0 }
let compactMapped = numbers.compactMap { $0 }
print(maped)
//[[Optional(1), Optional(2), Optional(3), nil], [Optional(4), Optional(5), Optional(6)], [Optional(7)]]
print(flatMapped)
//[Optional(1), Optional(2), Optional(3), nil, Optional(4), Optional(5), Optional(6), Optional(7)]
print(compactMapped)
//[[Optional(1), Optional(2), Optional(3), nil], [Optional(4), Optional(5), Optional(6)],
将数组扁平化,实现数组降维
map不可以降维- flatMap可以降维
compactMap不可以降维
注释
map、flatMap、compactMap不可以对子数组,进行过滤nil操作