2016-07-06 23 views
5

olduğu yerde döndürün. Değerlerin doğru olduğu bir dizi Boole dizisinden bir dizi dizin değeri döndürmenin zarif bir yolunu bilen var. Örnek:Bir dizi dizin değeri dizisini, gerçek

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

Bu döndürür: (muhtemelen daha okunabilir) Alternatif olarak

[0,1,3] 
+0

http://stackoverflow.com/questions/24041842/how-to -use-indexesofobjectspassing hızlı-in-hızlı? – Larme

cevap

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

Ayrıca, neden sizin için çok iyi ve faydalı olacağını düşündüğünüz bir fikir olduğunu düşünür müsünüz? – Jeet

+0

@JeetendraChoudhary Swift ile ilgili sorularda _ "zarif" ten bahsettiğimizde, pek çoğunun arasında Swift'de bulunan işlevsel yaklaşımlara yöneliyorum. Belirli bir koşulu destekleyen indekslere erişmek için çok sayıda farklı yaklaşım var. bir dizinin değerleri. Şahsen ben enumerate(). FlatMap' veya 'enumerate(). Filter {...} .map' yaklaşımını kendim kullanıyorum. – dfri

+0

Gerçekten çok yardımcı olduğunuz için teşekkür ederiz. Her zaman sizin gibi yaşlılardan nasıl ve niçin belirli bir yaklaşımı veya yöntemi beğendiklerini öğrenmeye yardımcı olur. Tekrar teşekkürler. – Jeet

İlgili konular