Swift,字符串字典:字符串,获取值数组的最佳方法,其中键包含字符串?

Swift,字符串字典:字符串,获取值数组的最佳方法,其中键包含字符串?,swift,Swift,我有一本字典,像这样: {“马特”:“苹果”、“卡尔文”:“坚果”、“苏西”:“梨”} 我想用字符串检查字典的键,看看它们是否包含该字符串——如果包含,我想将它们各自的值添加到数组中 那么,如果输入是“a” 因为“马特”和“卡尔文”与“a”匹配,所以返回的是[“苹果”,“坚果” 基本上是寻找一些快捷的提示, 否则,我将像这样实施它: 抓取所有钥匙,放入数组中 筛选字符串值的键,这是keyArray 枚举keyArray,并从字典中获取它们的所有值 Boom有一个值数组 只需在字典上使用过滤器:

我有一本字典,像这样: {“马特”:“苹果”、“卡尔文”:“坚果”、“苏西”:“梨”}

我想用字符串检查字典的
,看看它们是否包含该字符串——如果包含,我想将它们各自的
添加到数组中

那么,如果输入是“a” 因为“马特”和“卡尔文”与“a”匹配,所以返回的是[“苹果”,“坚果”

基本上是寻找一些快捷的提示, 否则,我将像这样实施它:

  • 抓取所有钥匙,放入数组中
  • 筛选字符串值的键,这是keyArray
  • 枚举keyArray,并从字典中获取它们的所有值
  • Boom有一个值数组

只需在字典上使用
过滤器

let dict: [String: String] = ["Matt": "Apple", "Calvin": "Nut", "Susie": "Pear"]

func findValuesMatching(search: String, in dict: [String: String]) -> [String] {
    return dict
        .filter { (key, value) in
            return key.range(of: search) != nil
        }.map { (key, value) in
            return value
        }
}

print(findValuesMatching(search: "a", in: dict))

只需在字典上使用
过滤器

let dict: [String: String] = ["Matt": "Apple", "Calvin": "Nut", "Susie": "Pear"]

func findValuesMatching(search: String, in dict: [String: String]) -> [String] {
    return dict
        .filter { (key, value) in
            return key.range(of: search) != nil
        }.map { (key, value) in
            return value
        }
}

print(findValuesMatching(search: "a", in: dict))
这样做:

let dict = ["Matt":"Apple", "Calvin":"Nut", "Susie":"Pear"]
let containsA = dict.filter({ $0.key.lowercased().contains("a") }).map({ $0.value })
输出:

["Apple", "Nut"]
这样做:

let dict = ["Matt":"Apple", "Calvin":"Nut", "Susie":"Pear"]
let containsA = dict.filter({ $0.key.lowercased().contains("a") }).map({ $0.value })
输出:

["Apple", "Nut"]

您可以在每个键上使用
contains()
筛选字典, 然后提取相应的值:

let dict = [ "Matt":"Apple", "Calvin":"Nut", "Susie":"Pear" ]
let input = "a"

let values = Array(dict.filter { $0.key.contains(input) }.values)
print(values) // ["Apple", "Nut"]
或者使用
flatMap()
(在Swift 4.1中重命名为
compactMap()
):

这里,如果键包含 指定的字符串,否则为to
nil
flatMap()
然后返回
使用非
nil
值的数组。

您可以在每个键上使用
contains()
筛选字典, 然后提取相应的值:

let dict = [ "Matt":"Apple", "Calvin":"Nut", "Susie":"Pear" ]
let input = "a"

let values = Array(dict.filter { $0.key.contains(input) }.values)
print(values) // ["Apple", "Nut"]
或者使用
flatMap()
(在Swift 4.1中重命名为
compactMap()
):

这里,如果键包含 指定的字符串,否则为to
nil
flatMap()
然后返回 具有非nil值的数组