如何在Swift中找到项目的索引?

Bar*_*ash 33 swift

有没有一种名为indexof或类似的方法?

var array = ["Jason", "Charles", "David"]

indexOf(array, "Jason") // Should return 0
Run Code Online (Sandbox Code Playgroud)

nat*_*han 58

编辑:从Swift 3.0开始,您应该使用该.index(where:)方法,并按照下面的Swift 2.0编辑中的更改进行操作.

编辑:从Swift 2.0开始,您应该使用该indexOf方法.它也返回nil或其参数的第一个索引.

if let i = array.indexOf("Jason") {
    print("Jason is at index \(i)")
} else {
    print("Jason isn't in the array")
}
Run Code Online (Sandbox Code Playgroud)

使用该find功能.它返回nil(如果未找到值)或数组中值的第一个索引.

if let i = find(array, "Jason") {
    println("Jason is at index \(i)")
} else {
    println("Jason isn't in the array")
}
Run Code Online (Sandbox Code Playgroud)


gre*_*ght 14

在Swift 2.0(Xcode 7.1b)中,您可以使用

if let result = array.indexOf("Jason")
Run Code Online (Sandbox Code Playgroud)

虽然find(array, "Jason")已被弃用.


CHi*_*-NY 8

我像上面一样创建了这个函数,但它返回了索引数组

extension Array {
    func indexesOf<T : Equatable>(object:T) -> [Int] {
        var result: [Int] = []
        for (index,obj) in enumerate(self) {
            if obj as T == object {
                result.append(index)
            }
        }
        return result
    }
}
Run Code Online (Sandbox Code Playgroud)

也许它对你有用