2016-11-13 56 views
5

我有一個公式重新調整數組,例如var Array = [a,s,d,s,f,g,g,h,e]。我想要的是運行一個for循環或一些其他選項,使我回到a,s,d,f,g,h,e - 只有唯一的值。我如何使用ios Swift來做到這一點?如何使用Swift顯示數組的獨特元素?

+0

你關心元素的順序嗎? – Alexander

回答

10

如果你不關心順序:如果你關心的順序

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

使用這個擴展,它允許你刪除重複

只需使用一組AnySequence的元素,同時保留順序:

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

我認爲,如果將已添加的類型更改爲Array,則會更快。 – masakih

+0

@masakih是什麼讓你懷疑?集合有'O(1)'外觀(快速調用'contains(_ :)'調用需要),而在一般情況下陣列有O(n)循環升級 – Alexander

+0

抱歉!我只專注於插入(_ :)'。但我忽略了'contains(_ :)'。 – masakih