2016-11-13 7 views
5

मेरे पास एक सूत्र है जो उदाहरण के रूप में var Array = [a,s,d,s,f,g,g,h,e] है। मैं चाहता हूं कि for लूप या कुछ अन्य विकल्प चलाएं जो मुझे a,s,d,f,g,h,e - केवल अद्वितीय मान देता है। मैं आईओएस स्विफ्ट के साथ यह कैसे कर सकता हूं?स्विफ्ट का उपयोग कर सरणी के अद्वितीय तत्व कैसे प्रदर्शित करें?

+0

क्या आप तत्वों के आदेश की परवाह करते हैं? – Alexander

उत्तर

10

आप के बारे में परवाह नहीं करते हैं:

बस एक सेट का उपयोग करें:

इस विस्तार का उपयोग करें, जो आप डुप्लिकेट को दूर करने के लिए अनुमति देता है:

let set: Set = ["a", "s", "d", "s", "f", "g" , "g", "h", "e"] 
print(set) // ["a", "s", "f", "g", "e", "d", "h"] 

आप पर ध्यान देते हैं किसी भी पर्याप्तता के तत्व, आदेश को संरक्षित करते समय:

extension Sequence where Iterator.Element: Hashable { 
    func unique() -> [Iterator.Element] { 
     var alreadyAdded = Set<Iterator.Element>() 
     return self.filter { alreadyAdded.insert($0).inserted } 
    } 
} 

let array = ["a", "s", "d", "s", "f", "g" , "g", "h", "e"] 
let result = array.unique() 
print(result) // ["a", "s", "d", "f", "g", "h", "e"] 

+0

मुझे लगता है, अगर पहले से ही बदल दिया गया है ऐरे में जोड़ा गया, तो यह तेज़ होगा। – masakih

+0

@masakih आपको क्या संदेह है? सेट में 'ओ (1)' लुक अप (तेज 'के लिए जरूरी है (_ :) 'कॉल), जबकि सरणी में सामान्य मामले में ओ (एन) लूप अप – Alexander

+0

क्षमा करें! मैं केवल 'डालने (_ :)' पर ध्यान केंद्रित कर रहा था। लेकिन मैंने अनदेखा किया था '_ (_ :) '। – masakih

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