Dav*_*e G 0 for-loop contains swift
使用 Swift,我有一个大约 30 个字符串的数组(每个字符串是一个单词)。我还有一个变量字符串,我想检查该字符串是否在数组中具有匹配值。
我的问题是,从效率的角度来看,我应该只使用:
if myArray.contains("MyString") {
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
还是我应该遍历它?
for i in 0..<myArray.count {
if myArray[i] == "MyString" {
//Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
从效率的角度来看,它的使用效率更高,myArray.contains("myString")因为一旦它达到等于 "myString" 的值,它就会停止,如果它确实存在于数组中。一种for-loop即使在找到您指定的值之后,也会继续遍历所有值,因此效率较低,但可能仅提供可忽略不计的效率升级,除非数组具有大量元素。
就像@vadian 所说的,有第三种方式。还有第四种方式,使用 a while-loop,您可以在使用 a 找到您搜索的值后停止break(您也可以在您的 中执行此操作for-loop),但是 using.contains(...)更具可读性和简洁性,因此在我的意见是最好的选择。