मैं स्विफ्ट 3 का उपयोग करके एक सरणी में मौजूद सभी A वर्णों को 15 से बदलना चाहता हूं।

उदाहरण सरणी:

["4", "5", "6", "A", "A", "Q", "A"]

वांछित परिणाम:

["4", "5", "6", "15", "15", "Q", "15"]
-4
Neeraj Sonaro 27 नवम्बर 2017, 12:36

3 जवाब

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

बचाव के लिए map:

var a = ["4", "5", "6", "A", "A", "Q", "A"]
a = a.map({ $0 == "A" ? "15" : $0 })
print(a)// ["4", "5", "6", "15", "15", "Q", "15"]

संपादित करें: त्रुटि स्क्रीनशॉट के बाद:

आपके पास वर्णों की एक सरणी है और इसलिए उपरोक्त कोड काम नहीं कर रहा है। साथ ही, याद रखें "15" दो अक्षर हैं और एक वर्ण नहीं है। इसलिए, मैंने वर्ण 'ए' को स्ट्रिंग "15" से बदल दिया है और इसे स्ट्रिंग्स की एक सरणी में मैप किया है, इसके बजाय

let player1 = "456AAQA"
var player1Cards = Array(player1.characters) // ["4", "5", "6", "A", "A", "Q", "A"]

var player1CardsStrings = player1Cards.map{$0 == "A" ? "15" : String($0)}

player1CardsStrings // ["4", "5", "6", "15", "15", "Q", "15"]
2
Puneet Sharma 27 नवम्बर 2017, 13:12

खेल के मैदान पर परीक्षण किया गया।

चूँकि आपके प्रश्न में ऐसी जानकारी का अभाव है जो आपने पहले नहीं दी थी, इसलिए आप यह कर सकते हैं कि आप क्या कर सकते हैं।

"लूप के लिए": यदि आवश्यक हो तो आप पुनरावृति करते हैं और मान को प्रतिस्थापित करते हैं। यह एक तर्क है जिसे आप लगभग सभी भाषाओं पर लागू कर सकते हैं।

var array1 = ["4", "5", "6", "A", "A", "Q", "A"]
for index in 0 ... array1.count-1
{
    if array1[index] == "A"
    {
        array1[index] = "15"
    }
}
print("array1: \(array1)")

"प्रत्येक लूप के लिए": यदि आवश्यक हो तो आप पुनरावृति करते हैं और मान को प्रतिस्थापित करते हैं। यह एक तर्क है जिसे आप लगभग सभी भाषाओं पर लागू कर सकते हैं (शायद पिछली वाली कम भाषाएं)

var array2 = ["4", "5", "6", "A", "A", "Q", "A"]
for (index, object) in array2.enumerated()
{
    if object == "A"
    {
        array2[index] = "15"
    }
}
print("array2: \(array2)")

"मानचित्र": आपके लिए "मानचित्र" पुनरावृति (यहां जादू के पीछे महत्वपूर्ण हिस्सा है), आप मूल्य की जांच करते हैं और यदि आवश्यक हो तो मूल्य को प्रतिस्थापित करते हैं। $0 "वर्तमान आइटम" का प्रतिनिधित्व करते हैं। यहाँ एक विशिष्टता है।

var array3 = ["4", "5", "6", "A", "A", "Q", "A"]
array3 = array3.map({
    if $0 == "A"
    {
        return "15"
    }
    return $0
})
print("array3: \(array3)")

"नक्शा": आपके लिए "नक्शा" पुनरावृति, आप मूल्य की जांच करते हैं और यदि आवश्यक हो तो परीक्षण के साथ एक टर्नरी के साथ मूल्य को प्रतिस्थापित करें।

var array4 = ["4", "5", "6", "A", "A", "Q", "A"]
array4 = array4.map({$0 == "A" ? "15" : $0})
print("array4: \(array4)")

मुझे 4 तरीके बताए गए हैं (मैं स्पष्ट रूप से और अधिक map() स्पष्ट रूप से बंद कर सकता था, सरल से अधिक जटिल तक। हम नहीं जान सकते कि क्या आप अपने प्रयासों को नहीं दिखाते हैं कि आप कहां हैं अटक गया। क्या यह लूप के लिए है? मूल एल्गोरिदम? स्विफ्ट उन्नत उपयोगकर्ता पिछले वाले के अधिक शौकीन हो सकते हैं, लेकिन शुरुआती लोगों के लिए, यह काफी जटिल और "जादू" है। इसलिए जब वे इसे एक अलग परीक्षण के लिए थोड़ा बदलना चाहते हैं, तो वे कभी नहीं जानते कि क्या करना है।

साइड नोट: मैं एक स्विफ्ट डेवलपर नहीं हूं, अधिक एक उद्देश्य-सी हूं, इसलिए इसमें चेक की कमी हो सकती है। यह उत्तर अलग-अलग तरीकों को दिखाने के लिए है, आप "वर्बोज़" से कम "वर्बोज़" कोड में कैसे जाते हैं, लेकिन आपको वैसे भी मास्टर करने की आवश्यकता है। यहां तक ​​कि अगर आपको map() के साथ समस्या है, तो आप इसे "बाईपास" कर सकते हैं और इसे मैन्युअल रूप से कर सकते हैं।

1
Larme 27 नवम्बर 2017, 12:58
 let values = ["4", "5", "6", "A", "A", "Q", "A"]
 let mappedvalues = values.map({ (value: String) -> String in
    if value != "A" {
       return value
    }
    return "15"
 })
0
rajtharan-g 27 नवम्बर 2017, 12:39