如何检查数组中是否存在某个元素?


本文将解释如何在 Swift 语言中检查数组中是否存在某个元素。

在 Swift 中,有多种方法可以检查数组中是否存在某个元素:

使用 contains 方法

如果数组包含目标元素,则 contains(_:) 方法返回 true。此方法只能用于其元素符合 Equatable 协议的数组。

以下是一个使用包含字符串数组的 contains 的示例。字符串符合 Equatable 协议,因此我们可以在此处使用 contains 方法。

算法

  • 步骤 1 - 创建一个输入字符串数组

  • 步骤 2 - 通过传递目标元素调用 contains() 方法

  • 步骤 3 - contains() 方法返回一个布尔值

示例

Open Compiler
import Foundation let languages = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] let targetElement = "Swift" print ("Given array =",languages,"\nElement to search =",targetElement) if languages.contains(targetElement) { print("\(targetElement) is in the array.") } else { print("\(targetElement) is not in the array.") }

输出

Given array = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] 
Element to search = Swift
Swift is in the array.

使用 contains(where:) 方法

contains(where:) 是 Swift 中 Sequence 协议的一种方法,它返回一个布尔值,指示序列是否包含满足给定谓词的元素。

算法

  • 步骤 1 - 创建一个输入字符串数组

  • 步骤 2 - 调用 contains(where:) 方法

  • 步骤 3 - 在 contains(where:) 函数内的 where 闭包中检查目标元素

  • 步骤 4 - contains(where:) 方法返回一个布尔值

示例

以下是如何使用 contains(where:) 检查字符串数组是否包含字符串的示例:

Open Compiler
import Foundation let languages = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] let targetElement = "Swift" print ("Given array =",languages,"\nElement to search =",targetElement) if languages.contains(where: { $0 == targetElement }) { print("\(targetElement) is in the array.") } else { print("\(targetElement) is not in the array.") }

输出

Given array = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] 
Element to search = Swift
Swift is in the array.

示例

您还可以使用 contains(where:) 在自定义类型数组中搜索元素,只要您提供一个谓词,该谓词返回一个布尔值,指示元素是否满足某个条件。例如,

Open Compiler
import Foundation struct Student { let name: String let score: Int } let students: [Student] = [Student(name: "John", score: 80), Student(name: "Tina", score: 75), Student(name: "Bob", score: 89), Student(name: "Alice", score: 67)] print(students) if students.contains(where: { $0.score > 80 }) { print("The student array contains a student who scored more than 80%.") } else { print("The student array does not contain any students who scored more than 80%.") }

输出

[main.Student(name: "John", score: 80), main.Student(name: "Tina", score: 75), main.Student(name: "Bob", score: 89), main.Student(name: "Alice", score: 67)]
The student array contains a student who scored more than 80%.

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

使用 filter 方法

filter 方法是 Swift 中的高阶函数,它允许您通过仅包含满足特定条件的元素来从现有数组创建一个新数组。

算法

  • 步骤 1 - 创建一个输入字符串数组

  • 步骤 2 - 调用 filter() 函数

  • 步骤 3 - 在 filter() 函数内的闭包中检查目标元素

  • 步骤 4 - filter() 函数返回一个新的搜索元素数组

  • 步骤 5 - 检查结果数组是否为空

示例

以下是如何使用 filter 检查数组中是否存在元素的示例:

Open Compiler
let languages = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] let targetElement = "Swift" print ("Given array =",languages,"\nElement to search =",targetElement) let filteredElements = languages.filter({ $0 == targetElement }) if filteredElements.isEmpty == false { print("\(targetElement) is in the array.") } else { print("\(targetElement) is not in the array.") }

输出

Given array = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] 
Element to search = Swift
Swift is in the array.

使用 firstIndex(of:) 方法

firstIndex(of:) 是 Swift 中 RandomAccessCollection 协议的一种方法,它返回集合中第一个等于给定元素的元素的索引,如果未找到该元素,则返回 nil。

以下是如何使用 firstIndex(of:) 查找数组中特定元素的索引的示例:

算法

  • 步骤 1 - 创建一个输入字符串数组

  • 步骤 2 - 调用 firstIndex() 函数

  • 步骤 3 - 如果输入数组中包含目标元素,则返回目标元素的索引

  • 步骤 4 - firstIndex() 函数返回第一个索引

  • 步骤 5 - 检查第一个索引是否有效

示例

Open Compiler
import Foundation let languages = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] let targetElement = "Swift" print ("Given array =",languages,"\nElement to search =",targetElement) if let index = languages.firstIndex(of: targetElement) { print("\(targetElement) is in the array at index \(index).") } else { print("\(targetElement) is not in the array.") }

输出

Given array = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] 
Element to search = Swift
Swift is in the array at index 4

使用 for 循环

算法

  • 步骤 1 - 创建一个输入字符串数组

  • 步骤 2 - 对输入数组执行 for 循环

  • 步骤 3 - 检查输入数组中是否包含目标元素

  • 步骤 4 - 如果找到目标元素,则中断 for 循环的执行

示例

Open Compiler
import Foundation let languages = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] let targetElement = "Swift" print ("Given array =",languages,"\nElement to search =",targetElement) for language in languages { if language == targetElement { print("\(targetElement) is in the array.") break } }

输出

Given array = ["PHP", "Java", "Python", "JavaScript", "Swift", "Objective-C"] 
Element to search = Swift
Swift is in the array.

结论

我们有不同的方法来检查数组中是否存在某个元素。每种方法都有自己的时间复杂度来确定结果。您可以根据您的需求使用任何方法。

更新于: 2023年9月7日

209 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告