[Swift]指定した要素を配列から探してそのインデックスを取得

指定した要素を配列から探してそのインデックスを取得

indexOfを用いる
(Swift 1系で用いられていたfindはなくなりました)

Stringの配列

let strs = ["aiueo", "ABC", "いろは"]

let index = strs.indexOf("ABC")
// index = 1

指定した要素がなかった場合は、nilが返ってくる

配列の要素がクラスのインスタンスの場合

class RItem {
    let title: String
    let duration: Float
    
    init(title: String, duration: Float) {
        self.title = title
        self.duration = duration
    }
    
}

let item0 = RItem(title: "A-Album", duration: 13.0)
let item1 = RItem(title: "B-Album", duration: 4.9)
let item2 = RItem(title: "C-Album", duration: 8.9)

let items = [item0, item1, item2]

if let index = items.indexOf({$0 === item1}) {
    print(index)
}

同一インスタンスの参照であるかを判定するには、===を用いる
(The Swift Programming Language (Swift 2.1): Classes and Structures)

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください