2016-07-06 6 views

Antwort

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

Alternativ (möglicherweise besser lesbar)

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

Würden Sie auch bitte erklären, warum Sie denken, es ist elegant und am besten Ansatz Ihrer Meinung nach, dass eine große Hilfe wäre. – Jeet

+0

@JeetendraChoudhary Wenn wir _ "elegant" _ in Fragen zu Swift erwähnen, wende ich mich unter anderem den in Swift verfügbaren funktionalen Ansätzen zu. Es gibt zahlreiche verschiedene Ansätze, um auf die Indizes zuzugreifen, die bestimmte Bedingungen erfüllen. die Werte eines Arrays. Ich benutze persönlich den 'enumerate() .flatMap' oder' enumerate(). Filter {...} .map' Ansatz. – dfri

+0

Danke in der Tat sehr hilfreich, Es hilft immer, von Senioren wie Ihnen zu lernen, was und warum sie bestimmte Annäherung oder Methode mögen. Vielen Dank noch mal. – Jeet

Verwandte Themen