我正在寻找一种方法来查看某个值(存储在字典中)是否在数组中。数组如下所示:var array = Array<Dictionary<String, Int>>()
我在stackoverflow上环顾四周,发现了这个:How to check if an element is in an array。唯一的问题是我似乎无法通过编写contains
来使用arrray.contains...
方法。我做错了什么?
答案 0 :(得分:6)
您可以在contains
中使用contains
来检查数组中的任何词典是否包含您要查找的值。
例如,要在数组a
中搜索值1
:
let a: [[String: Int]] = [["a": 1, "b": 2], ["c": 3], ["d": 4]]
Swift 1.2:
if contains(a, {contains($0.values, 1)}) {
println("it is in there")
}
Swift 2.0:
/* Thanks to @Qbyte for providing this solution */
if a.contains({ $0.values.contains(1) }) {
print("it is in there")
}
这是有效的,因为数组a
的每个成员都使用闭包{contains($0.values), 1}
进行评估,看它是否为真。闭包获取它传递的字典,从中获取值数组,然后使用contains
查看值是否在那里。
答案 1 :(得分:1)
您可以使用此扩展程序:
extension Array {
func contains<T where T : Equatable>(obj: T) -> Bool {
return self.filter({$0 as? T == obj}).count > 0
}
}
您可以像以下一样进行测试:
var array1 = Array<Dictionary<String, Int>>()
array1 = [["zero": 0],["one": 1], ["two": 2]]
array1.contains(["zero": 0]) //true
array1.contains(["five": 5]) //false