यदि मेरे पास निम्न सरणी है और मैं एक स्ट्रिंग सरणी बनाना चाहता हूं जिसमें मिस्ट्रीडोर्स सरणी को शब्दकोश के लिए कुंजियों के रूप में मैप करके दरवाजे के पुरस्कार शामिल हैं, और संबंधित मानों को एक नई सरणी में प्राप्त करें।

इस प्रकार मुझे ["गिफ्ट कार्ड", "कार", "अवकाश"] की एक स्ट्रिंग सरणी मिल जाएगी, मैं यह कैसे कर सकता हूं?

let mysteryDoors = [3,1,2]

let doorPrizes = [
    1:"Car", 2: "Vacation", 3: "Gift card"]
1
Kent Wong 27 सितंबर 2017, 07:26

3 जवाब

सबसे बढ़िया उत्तर

आप map() प्रत्येक सरणी तत्व को संबंधित मान में कर सकते हैं शब्दकोष। अगर यह गारंटीकृत है कि सभी सरणी तत्व हैं शब्दकोश में कुंजी के रूप में मौजूद है तो आप यह कर सकते हैं:

let mysteryDoors = [3, 1, 2]
let doorPrizes = [ 1:"Car", 2: "Vacation", 3: "Gift card"]

let prizes = mysteryDoors.map { doorPrizes[$0]! }
print(prizes) // ["Gift card", "Car", "Vacation"]

यदि कोई कुंजी मौजूद नहीं है, तो रनटाइम क्रैश से बचने के लिए, उपयोग करें

let prizes = mysteryDoors.flatMap { doorPrizes[$0] }

अज्ञात कुंजियों को अनदेखा करने के लिए, या

let prizes = mysteryDoors.map { doorPrizes[$0] ?? "" }

अज्ञात कुंजियों को डिफ़ॉल्ट स्ट्रिंग में मैप करने के लिए।

2
Martin R 27 सितंबर 2017, 07:52

अगर आपको map का उपयोग करना है, तो यह कुछ इस तरह दिखेगा:

let array = mysteryDoors.map { doorPrizes[$0] }
1
sCha 27 सितंबर 2017, 07:50

ऐप्पल डॉक उदाहरण कोड को दोबारा पढ़ने और मुझे जो चाहिए उसे बदलने के बाद। मुझे विश्वास है कि यह (लगभग) है। दुर्भाग्य से यह अब नई लाइनों के साथ स्ट्रिंग प्रारूप में है ...

let myPrizes = doorPrizes.map { (number) -> String in
    var output = ""
    output = mysteryDoors[number]!
    return output;
}
0
Kent Wong 27 सितंबर 2017, 07:53