やりたいこと
配列から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
コメント