一、firstIndex(of:)
要在Swift中找到数组中某项的索引,你可以使用数组类型的firstIndex(of:)方法。
这个方法返回数组中第一个与给定元素相等的元素的索引,如果没有找到这样的元素,则返回nil。
let arrays = ["1","2","3","4","5","6",]
let seek = "3"
let index = arrays.firstIndex(of: seek)
print(index) //Optional(2)
print(arrays.firstIndex(of: "10")) // nil
如果数组中出现重复的对象,将返回什么索引
在这种情况下,firstIndex()方法将返回列表中第一次出现的索引
二、firstIndex(where:)
如果你需要找到一个满足某种条件的元素的索引你可以使用firstIndex(where:)方法来代替。
这个方法接收一个返回Bool的闭包,并返回闭包返回true的数组中第一个元素的索引。
let d1 = Dog()
d1.name = "d1"
d1.age = 5
let d2 = Dog()
d2.name = "d2"
d2.age = 3
let d3 = Dog()
d3.name = "d3"
d3.age = 2
let d4 = Dog()
d4.name = "d4"
d4.age = 6
let dogs = [d1,d2,d3,d4]
let seek = 3
let index = dogs.firstIndex { dog in
if dog.age == seek {
return true
}
return false
}
print(index) // Optional(1)
三、first(where:) 根据值查找数组中的元素
let d1 = Dog()
d1.name = "d1"
d1.age = 5
let d2 = Dog()
d2.name = "d2"
d2.age = 3
let d3 = Dog()
d3.name = "d3"
d3.age = 2
let d4 = Dog()
d4.name = "d4"
d4.age = 6
let dogs = [d1,d2,d3,d4]
let seek = 3
let dog = dogs.first { dog in
return dog.age == seek
}
print(dog) /// Optional(<Dog: 0x60000020eec0>)