Swift在4.1版本之前只有map和flatMap函数,之后引入了compactMap函数,但是compactMap函数并不是实现新的功能,而是用来解决flatMap函数功能不唯一的问题。原先flatMap函数既有去除nil的功能,也能将多维数组降维成一维,这违背了函数设计的单一职责原则,所以 Swift 4.1以后,使用flatMap函数只解决降维问题,去除nil的功能由新引入的compactMap函数完成。
map函数
逐个处理数组中的元素,并生成新数组
complactMap函数
和map函数一致,只是当结果返回nil时,新数组会去除这一项

flatMap函数
和map函数一致,但当原数组是多维数组时,新数组只会返回一维数组
