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
。
这是我的代码:
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
。