如何在Swift中查詢列表項的索引?


Swift提供了一些方法可以在集合型別上執行操作以獲取特定物件的索引。

要在Swift中查詢陣列中專案的索引,可以使用Array型別的firstIndex(of:)方法。此方法返回陣列中第一個等於給定元素的元素的索引,如果找不到這樣的元素,則返回nil。

如何列印列表項的索引?

讓我們來看一個例子。

演算法

步驟1 - 定義輸入陣列。

步驟2 - 在輸入陣列上呼叫firstIndex()方法。

步驟3 - 使用可選繫結獲取索引。

步驟4 - 如果找到,則列印索引。

示例

import Foundation
let languages: [String] = ["Java", "C++", "Swift", "Python", "JavaScript"]
let targetString = "Swift"
if let index = languages.firstIndex(of: targetString) {
   print("Index of \(targetString) is \(index)")
} else {
   print("\(targetString) is not in the list")
}

輸出

Index of Swift is 2

還有一些其他情況需要考慮和學習才能獲得索引。

如果陣列中存在重複物件,將返回哪個索引?

在這種情況下,firstIndex()方法將返回列表中第一次出現的索引。例如,

示例

import Foundation
let languages: [String] = ["Java", "C++", "Swift", "Python", "JavaScript", "Swift"]
let targetString = "Swift"
if let index = languages.firstIndex(of: targetString) {
   print("Index of \(targetString) is \(index)")
} else {
   print("\(targetString) is not in the list")
}

輸出

Index of Swift is 2

如果您需要查詢滿足特定條件的元素的索引

您可以改用index(where:)方法。此方法接受一個返回Bool的閉包,並返回陣列中閉包返回true的第一個元素的索引。例如,

示例

import Foundation
let languages: [String] = ["Java", "C++", "Swift", "Python", "JavaScript"]
let targetString = "Py"
if let index = languages.firstIndex(where: { $0.starts(with: targetString) }) {
   print("Index of \(targetString) is \(index)")
} else {
   print("\(targetString) is not in the list")
}

輸出

Index of Py is 3

結論

Swift為我們提供了幾種方法來獲取陣列中專案的索引。您可以根據您的需求使用任何方法。

更新於:2023年1月2日

15K+ 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告