やりたいこと
配列からfilterで特定の文字列が含まれる配列を抽出したとき、元配列のどのindexか知りたい
方法
下記の方法を利用しました。
(もしかしたらスマートな方法ではないのかもしれません。)
let items = ["A", "B", "A", "C", "A", "D"]
let filteredIndices = items.indices.filter {items[$0] == "A"}  // [0, 2, 4]
おそらくよりスマートなのは下記の方法だと思います。
ただし、私は下記を完全に理解できているわけではなかったため、今回は使用していません。
後ほど復習したいと思います。
extension Array where Element: Equatable {
    func indexes(of element: Element) -> [Int] {
        return self.enumerated().filter({ element == $0.element }).map({ $0.offset })
    }
}
items.indexes(of: "A") // [0, 2, 4]items.indexes(of: "B") // [1]
参考にしたページ
下記英語ページを参考にしました。
Attention Required! | Cloudflare

 
  
  
  
  
コメント