将字典映射到数组到字符串
Map dictionary to array to string
我正在处理一个字典,我需要将其解析为一个字符串,以便为 GraphQL 突变创建 属性。
我的字典是 [String: Bool]
,我需要提取设置为 true
.
的键
let dict: [String: Bool] = ["Objct1": true, "Objct2": false, "Objct3": true]
目前我正在使用四个函数(过滤、枚举、映射和连接),虽然我得到了想要的结果,但我想知道我是否需要所有这些函数:
let string = dict.filter { [=11=].value }
.enumerated()
.map {
return [=11=].offset == 0
? "\"\([=11=].element.key)\""
: ", \"\([=11=].element.key)\""
}
.joined()
编辑:
最终字符串需要包裹在"
中:""Objct1", "Objct3""
您可以使用单个 compactMap
,因为首先您需要 filter
您的 Dictionary
只保留 true
值,然后您需要到 map
到 return key
对应于 true
值。但是,您始终可以将后续的 filter
和 map
调用合并为单个 compactMap
,因为 compactMap
仅保留 non-nil
值,而不是 return 像 filter
一样输入一个布尔值,如果你的条件计算结果为真,你 return 无论你在 map
中 return,否则你 return nil
.
let trueKeys = dict.compactMap({key, value in value ? key : nil})
要将键连接成一个字符串,您只需在 compactMap
.
的结果上调用 joined
let graphQueryString = dict.compactMap({key, value in value ? "\"\(key)\"" : nil}).joined(separator: ",") // ""Objct3","Objct1""
请记住,您的键的顺序不一定与您声明的 Dictionary
相同,因为 Dictionary
根据定义是无序集合。如果你想继续排序,你可以使用元组数组而不是 Dictionary
,其中元组将由键值对组成。
我正在处理一个字典,我需要将其解析为一个字符串,以便为 GraphQL 突变创建 属性。
我的字典是 [String: Bool]
,我需要提取设置为 true
.
let dict: [String: Bool] = ["Objct1": true, "Objct2": false, "Objct3": true]
目前我正在使用四个函数(过滤、枚举、映射和连接),虽然我得到了想要的结果,但我想知道我是否需要所有这些函数:
let string = dict.filter { [=11=].value }
.enumerated()
.map {
return [=11=].offset == 0
? "\"\([=11=].element.key)\""
: ", \"\([=11=].element.key)\""
}
.joined()
编辑:
最终字符串需要包裹在"
中:""Objct1", "Objct3""
您可以使用单个 compactMap
,因为首先您需要 filter
您的 Dictionary
只保留 true
值,然后您需要到 map
到 return key
对应于 true
值。但是,您始终可以将后续的 filter
和 map
调用合并为单个 compactMap
,因为 compactMap
仅保留 non-nil
值,而不是 return 像 filter
一样输入一个布尔值,如果你的条件计算结果为真,你 return 无论你在 map
中 return,否则你 return nil
.
let trueKeys = dict.compactMap({key, value in value ? key : nil})
要将键连接成一个字符串,您只需在 compactMap
.
joined
let graphQueryString = dict.compactMap({key, value in value ? "\"\(key)\"" : nil}).joined(separator: ",") // ""Objct3","Objct1""
请记住,您的键的顺序不一定与您声明的 Dictionary
相同,因为 Dictionary
根据定义是无序集合。如果你想继续排序,你可以使用元组数组而不是 Dictionary
,其中元组将由键值对组成。