Swift-Version:4.2.1
正文
我们在开发中经常会碰到这样一种需求:查找某个element在数组中的index。我们可以通过apple 的API来获取,就是下面Swift中数组提供的两个API:
//获取第一个element的index
public func firstIndex(of element: Element) -> Int?
//获取最后一个element的index
public func lastIndex(of element: Element) -> Int?
示例:
- 基本类型
let num = [11,22,33,44,55,33]
//输出2
print(num.firstIndex(of: 33))
//输出5
print(num.lastIndex(of: 33))
- 对象类型
class Student {
var name = ""
init(name: String) {
self.name = name
}
}
var students = [Student]()
let stu1 = Student(name: "jack")
let stu2 = Student(name: "rose")
let stu3 = Student(name: "mj")
students = [stu1, stu2, stu3]
let index = students.firstIndex(where: {$0===stu1})
print(index)//optional(0)
注:
- 该API返回的值是一个optional,因为可能存在数组不包含查询的element的情况
- 通过API的名字可以看出,只能查找第一个element和最后一个element,并不能查找中间的element。比如上面的数组如果出现三次
33
,这两个API只能返回第一个和最后一个的index