Swift——查找元素在数组中的索引

420 阅读1分钟

一、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>)