我正在使用Swift 3.0并使用此代码搜索数组中的项目作为String类型的扩展名:
extension String {
func equal(compareToArray : [String]) -> Bool {
for s in compareToArray {
if self == s {
return true
}
}
return false
}
}
它运行正常,但我的问题是,我可以做得更好(更短/更简单或更快)吗?
好的,另一个类似的样本:
func contains(compareToArray : [String]) -> Bool {
for s in compareToArray {
if self.contains(s) {
return true
}
}
return false
}
答案 0 :(得分:6)
更短,更简单,更快
let compareToArray = ["foo", "bar", "baz"]
compareToArray.contains("bar")
修改强>
根据你的第二个例子
!compareToArray.filter {$ 0.contains(“oo”)}。isEmpty
compareToArray.index(where: {$0.contains("oo")}) != nil
答案 1 :(得分:0)
如果你想检查一个元素是否属于一个数组,在Swift 3.0中这是一个更好的方法:
使用:
array.index(of:element) - >诠释?
例如:
let myArray = ["a", "b", "c"]
let needle = "b"
if let pos = myArray.index(of: needle') {
print("\(needle) is in array at position : \(pos)"
} else {
print("It's not in array")
}