如何检查元素是否在数组中?
本文将解释如何在 Swift 语言中检查元素是否存在于数组中。
在 Swift 中有几种方法可以检查元素是否在数组中 -
使用 contains 方法
如果数组包含目标元素,则 contains(_:) 方法返回 true。此方法只能用于元素符合 Equatable 协议的数组。
下面是我们将 contains 与字符串数组一起使用的示例。 String 符合 Equatable 协议,因此我们可以在此处使用 contains 方法。
算法
步骤 1 - 创建字符串输入数组
步骤 2 - 通过传递目标元素调用 contains() 方法
步骤 3 - contains() 方法返回一个 bool 值
示例
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:) 检查字符串数组是否包含字符串的示例 -
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:) 在自定义类型数组中搜索元素,只要您提供一个谓词,该谓词返回布尔值,指示元素是否满足特定条件即可。例如,
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%.
使用 filter 方法
filter 方法是 Swift 中的高阶函数,它允许您通过仅包含满足特定条件的元素来从现有数组创建新数组。
算法
步骤 1 - 创建字符串输入数组
步骤 2 - 调用 filter() 函数
步骤 3 - 检查 filter() 函数内闭包中的目标元素
步骤 4 - filter() 函数返回一个新的搜索元素数组
步骤 5 - 检查结果数组是否为空
示例
以下是如何使用过滤器检查元素是否在数组中的示例 -
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 - 检查第一个索引是否是否有效
示例
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 循环执行
示例
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.
结论
我们有不同的方法来检查元素是否在数组中。每种方法都有自己的确定结果的时间复杂度。您可以根据需要使用任何方法。