2016-07-06 5 views
5

कोई भी बूल की सरणी से इंडेक्स वैल्यू की सरणी वापस करने के लिए एक शानदार तरीका जानता है जहां मान सत्य हैं। उदाहरण के लिए:बूल की सरणी से इंडेक्स वैल्यू की एक सरणी लौटाएं जहां सही

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

यह लौटना चाहिए:

[0,1,3] 
+0

http://stackoverflow.com/questions/24041842/how-to -use-indexesofobjectspassingtest-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

@ जीतेन्द्र चौधरी जब हम स्विफ्ट के बारे में प्रश्नों में _ "सुरुचिपूर्ण" _ का उल्लेख करते हैं, तो मैं कई लोगों में स्विफ्ट में उपलब्ध कार्यात्मक दृष्टिकोणों को बदलता हूं। इंडेक्स तक पहुंचने के लिए कई अलग-अलग दृष्टिकोण हैं जो कुछ दी गई स्थिति को बनाए रखते हैं w.r.t. एक सरणी के मूल्य। मैं व्यक्तिगत रूप से 'enumerate()। FlatMap' या 'enumerate() फ़िल्टर {{}} .map' स्वयं का उपयोग करता हूं। – dfri

+0

आपको वास्तव में बहुत मददगार धन्यवाद, यह हमेशा आपके जैसे सीनियर से सीखने में मदद करता है कि उन्हें कुछ दृष्टिकोण या विधि क्यों पसंद है। एक बार फिर आपका धन्यवाद। – Jeet

संबंधित मुद्दे