使用filter在数组Swift 3中查找键

时间:2017-04-21 09:07:28

标签: arrays swift

如何使用过滤器等Swift函数优化代码? 我想要做的是我需要找到一个特定的密钥,如果存在,无论该密钥在下面的数组中有什么价值?

下面的方法对我来说很好,但我认为还有更好的方法。

let arrDic = [["Key1": "yes"], ["Key2": "no"], ["Key3": "yes"], ["Key4": "Option1, Option2"], ["Key5": "OC1_OPTIONB"], ["Key6": "H1_OPTIONA"]]

for dict in arrDic {
    if dict["Key1"] != nil {
        print(true)
        break
    }
}

2 个答案:

答案 0 :(得分:0)

let arrDic = [["Key1": "yes"], ["Key2": "no"], ["Key3": "yes"], ["Key4": "Option1, Option2"], ["Key5": "OC1_OPTIONB"], ["Key6": "H1_OPTIONA"]]

let result = arrDic.filter { $0["Key1"] != nil }.first

对不起,没有注意到意图,然后添加

print(result != nil)

甚至更短

let isPresent = arrDic.filter { $0["Key1"] != nil }.isEmpty

甚至

let isPresent = arrDic.contains { $0["Key1"] != nil }

答案 1 :(得分:0)

您可以使用与contains的自定义匹配来搜索项目:

if arrDic.contains(where: {(dict) -> Bool in
    return dict["Key1"] != nil
}) {
    print(true)
}