Każdy zna elegancki sposób zwracania tablicy wartości indeksu z tablicy Booli, w której wartości są prawdziwe. NpZwraca tablicę wartości indeksu z tablicy Bool gdzie true
let boolArray = [true, true, false, true]
Należy zwrócić:
[0,1,3]
Każdy zna elegancki sposób zwracania tablicy wartości indeksu z tablicy Booli, w której wartości są prawdziwe. NpZwraca tablicę wartości indeksu z tablicy Bool gdzie true
let boolArray = [true, true, false, true]
Należy zwrócić:
[0,1,3]
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]
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
@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
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
http://stackoverflow.com/questions/24041842/how-to -use-indexesofobjectspassingtest-in-swift? – Larme