The enumerated
method, but pairing each element with its index instead of an
incrementing integer counter.
This is essentially equivalent to zip(x.indices, x)
:
let numbers = [10, 20, 30, 40, 50]
var matchingIndices: Set<Int> = []
for (i, n) in numbers.indexed() {
if n.isMultiple(of: 20) {
matchingIndices.insert(i)
}
}
// matchingIndices == [1, 3]
The indexed
method returns an IndexedCollection
type:
extension Collection {
func indexed() -> IndexedCollection<Self>
}
IndexedCollection
scales from a collection up to a random-access collection,
depending on its base type. Indexed
also conforms to LazySequenceProtocol
when the base type conforms.