如何檢查陣列中是否存在某個元素?


本文將解釋如何在 Swift 語言中檢查陣列中是否存在某個元素。

在 Swift 中,有多種方法可以檢查陣列中是否存在某個元素:

使用 contains 方法

如果陣列包含目標元素,則 contains(_:) 方法返回 true。此方法只能用於其元素符合 Equatable 協議的陣列。

以下是一個使用包含字串陣列的 contains 的示例。字串符合 Equatable 協議,因此我們可以在此處使用 contains 方法。

演算法

  • 步驟 1 - 建立一個輸入字串陣列

  • 步驟 2 - 透過傳遞目標元素呼叫 contains() 方法

  • 步驟 3 - contains() 方法返回一個布林值

示例

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 - 檢查結果陣列是否為空

示例

以下是如何使用 filter 檢查陣列中是否存在元素的示例:

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.

結論

我們有不同的方法來檢查陣列中是否存在某個元素。每種方法都有自己的時間複雜度來確定結果。您可以根據您的需求使用任何方法。

更新於: 2023年9月7日

209 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告