Swift - 如何搜索结构数组

Swift - How to search an array of structs

我有一个这样的数组,例如:

struct elephants {
 var name: String
 var age: Int
 var location: String
}

然后我有一个结构数组

var elephantArray [elephants] = [elephant1, elephant2, elephant3]

我想做的是根据 elephants.name 进行搜索 - 所以如果 elephant2.name 是 "Bob" 那么当我根据名称 [=21] 搜索数组时=] 那么它将 return elephant2 的索引位置。

我该怎么做?

这是获取索引的简单方法:

func getIndex(for name: String) {
    for i in 0..<elephantArray.count {
        if elephantArray[i].name == name {
            print(i)
        }
    }
}

我们遍历数组并检查元素的名称 属性 是否与我们要查找的元素匹配,这在函数参数中指定。

例如:

let elephant1 = Elephant(name: "A", age: 1)
let elephant2 = Elephant(name: "B", age: 2)
let elephant3 = Elephant(name: "C", age: 3)

let elephantArray = [elephant1, elephant2, elephant3]

getIndex(for: "B") // prints 1

for 循环将每个元素的名称 属性 与 "B" 进行比较,并在匹配时打印出索引。这只有效,因为 i 从 0 而不是 1 开始,因此它与数组索引平行递增,数组索引也从 0 开始。

希望对您有所帮助!

这里有一个简单的功能,可以帮助您:

func searchElephantIndex(name: String, elephArray: [elephants]) -> Int? {
  return elephArray.firstIndex { [=10=].name == name }
}

如果具有请求名称的大象不存在,函数将return nil。

firstIndex

这里是实现

import UIKit
import Foundation

struct elephants {
 var name: String
 var age: Int
 var location: String
}

let elephant1 = elephants.init(name: "A", age: 10, location: "BD")
let elephant2 = elephants.init(name: "B", age: 20, location: "UK")
let elephant3 = elephants.init(name: "C", age: 30, location: "IND")

var elephantArray :  [elephants] = [elephant1, elephant2, elephant3]

if let i = elephantArray.firstIndex(where: { [=10=].name == "A" }) {
    print("get the \(i)")
}