2016-07-06 10 views

Odpowiedz

7
let boolArray = [true, true, false, true] 
let trueIdxs = boolArray.enumerate().flatMap { $1 ? $0 : nil } 
print(trueIdxs) // [0, 1, 3] 

Alternatywnie (ewentualnie bardziej czytelny)

let boolArray = [true, true, false, true] 
let trueIdxs = boolArray.enumerate().filter { $1 }.map { $0.0 } 
print(trueIdxs) // [0, 1, 3] 
+0

Czy mógłbyś również wyjaśnić, dlaczego uważasz, że jest to eleganckie i najlepsze podejście, które według Ciebie byłoby bardzo pomocne. – Jeet

+0

@JeetendraChoudhary Kiedy wspominamy "elegancki" w pytaniach dotyczących Swift, ja, wśród wielu, zwracam się do funkcjonalnych podejść dostępnych w Swift. Istnieje wiele różnych podejść do uzyskania dostępu do indeksów, które utrzymują określony stan w.r.t. wartości tablicy. Osobiście stosuję podejście 'enumerate(). FlatMap' lub' enumerate(). Filter {...} .map'. – dfri

+0

Dziękuję bardzo, bardzo pomocne, zawsze pomaga uczyć się od seniorów jak ty co i dlaczego lubią pewne podejście lub metody. Dziękuję raz jeszcze. – Jeet