包含或 for 循环,哪个更有效?

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)

Mik*_*keG 5

从效率的角度来看,它的使用效率更高,myArray.contains("myString")因为一旦它达到等于 "myString" 的值,它就会停止,如果它确实存在于数组中。一种for-loop即使在找到您指定的值之后,也会继续遍历所有值,因此效率较低,但可能仅提供可忽略不计的效率升级,除非数组具有大量元素。

就像@vadian 所说的,有第三种方式。还有第四种方式,使用 a while-loop,您可以在使用 a 找到您搜索的值后停止break(您也可以在您的 中执行此操作for-loop),但是 using.contains(...)更具可读性和简洁性,因此在我的意见是最好的选择。

  • 您也可以在成功时使用 `break` 语句停止 `for` 循环。 (4认同)