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

swiftserver side programmingprogramming

本文将解释如何在 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.

结论

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


相关文章