使用 Swift,我有一个包含大约 30 个字符串的数组(每个字符串都是一个单词)。我还有一个可变字符串,我想检查该字符串是否在数组中具有匹配值。
我的问题是,从效率的角度来看,我应该只使用:
if myArray.contains("MyString") {
//Do stuff
}
或者我应该遍历它吗?
for i in 0..<myArray.count {
if myArray[i] == "MyString" {
//Do stuff
}
}
最佳答案
从效率的角度来看,使用 myArray.contains("myString")
效率更高,因为一旦它达到等于 "myString"的值,它就会停止,如果它确实存在于数组中全部。 for-loop
将继续遍历所有值,即使在它找到您指定的值之后也是如此,因此它的效率较低,但可能仅提供可忽略的效率提升,除非数组具有大量元素。
就像@vadian 所说的,还有第三种方法。还有第 4 种方法,使用 while-loop
,你可以在使用 break
找到你搜索的值后停止(你可以也可以在您的 for-loop
中执行此操作),但是使用 .contains(...)
更具可读性和简洁性,因此在我看来是最佳选择。
关于swift - contains or for-loop,哪个更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40310576/