Swift 从二维数组中获取字符串数组

Swift get array of strings from 2d array

这是我的代码:

var parentList = [String]()

for user in MPUser.array {
    if user.childParent == "parent" {
        parentList.append(user.firstName)
    }
}

guard parentList.contains((selectedSecondJob?.assigned)!) else {
    print("payday has to be a parent, yo!")
    return
}

它有效,但我知道我可以通过使用像 flatMap 这样的高阶函数让它变得更好 "Swifty"。

这是我尝试过的:

let parentListTEST = MPUser.array.flatMap({ [=12=].childParent })

但它 returns 是一个字符数组,而不是字符串。为什么? MPUser 数组是一个结构数组,明确将 "parent" 参数定义为字符串,而不是字符。

如何从我的 MPUser 数组中获取一个新数组,该数组仅将父项的名称作为字符串而不是字符?

你可以试试

let parentListTEST = MPUser.array.filter { [=10=].childParent == "childParent" }.map { [=10=].firstName }

或者

let parentListTEST = MPUser.array.compactMap { [=11=].childParent == "childParent" ?  [=11=].firstName : nil }

使用map.

flatMap 展平嵌套集合。您正在映射 User 的列表,获取 childParent String 的数组(它们本身是 Character 的集合),其中 flatMap 是展平成一个数组。

您只需要不展平的映射,所以只需使用 map