这个问题在这里已有答案:
我有类型为struct的对象的Array A.
struct Caste {
var arr = [1,2]
}
let siri = [Caste(), Caste(), Caste()]
现在我想要一个单独的数组,其中每个对象数组的所有元素组成如下所示:
let re1 = siri.compactMap { $0.arr }
print("COMPACT: \(re1)")
let re2 = siri.flatMap { $0.arr }
print("FLAT: \(re2)")
结果:
COMPACT: [[1, 2], [1, 2], [1, 2]]
FLAT: [1, 2, 1, 2, 1, 2]
由于在Swift 4.1中不推荐使用flatMap,我尝试使用compactMap,但它给出的数组数组不是单个数组。
我如何通过flatMap实现通过flatMap实现。
flatMap
分裂成自己和compactMap
。 flatMap
是扁平阵列,而compactMap
的目的是采取一系列[T?]
并删除所有nil对象,使[T]
阵列。这具有<=原始计数的计数,具体取决于nils的数量。