2016-07-06 12 views
5

値が真であるBoolsの配列からインデックス値の配列を返すエレガントな方法は誰でも知っています。例:Boolの配列からインデックス値の配列を返します。

let boolArray = [true, true, false, true] 

これは返す必要があります:

また
[0,1,3] 
+0

http://stackoverflow.com/questions/24041842/how-to -use-indexes of objectspassing-test-in-swift? – Larme

答えて

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

(おそらくより読みやすい)

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

あなたはそれがエレガントで最も良いアプローチであると思う理由を説明してください、あなたの意見では大きな助けになるでしょうか? – Jeet

+0

@JeetendraChoudhary Swiftに関する質問で「エレガントな」_と言えば、私は多くの人の中で、Swiftで利用可能な機能的アプローチに目を向ける。与えられた条件w.r.tを維持する指標にアクセスするには、数多くの異なるアプローチがあります。配列の値私は個人的に 'enumerate()。flatMap'または' enumerate()。filter {...} .map'アプローチを使用しています。 – dfri

+0

ありがとう、本当に助けになる、それはいつもあなたのような高齢者から何か、なぜ彼らは特定のアプローチや方法が好きであるかを学ぶのに役立ちます。もう一度ありがとうございます。 – Jeet

関連する問題