数组中元素的索引

Max*_*bin 2 swift

例如,我有以下课程:

class Person: Any {
    dynamic var name: String = ""
    dynamic var surname: String = ""
}
Run Code Online (Sandbox Code Playgroud)

另外,我有以下数组与"Person"类的实例:

let person1 = Person(); person1.name = "John"; person1.surname = "Smith"
let person2 = Person(); person2.name = "Ivan"; person2.surname = "Ivanov"
let person3 = Person(); person3.name = "Sam"; person3.surname = "Woodman"
let personList = [person1, person2, person3]
Run Code Online (Sandbox Code Playgroud)

有没有办法以某种方式得到所有约翰斯的指数?

Cal*_*lam 5

您可以flatMap将人员列表作为枚举列表,以便返回匹配的偏移量.

let indexes = personList.enumerated().flatMap { $1.name == "John" ? $0 : nil }
Run Code Online (Sandbox Code Playgroud)

否则,您可以通过简单的for循环实现此目的.

var indexes = [Int]()

for index in personList.indices {
    if personList[index].name == "John" {
        indexes.append(index)
    }
}

print(indexes)
Run Code Online (Sandbox Code Playgroud)