2016-11-13 10 views

Odpowiedz

10

Jeśli nie dbają o kolejności:

Wystarczy użyć zestawu:

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

Jeśli dbasz o porządek:

użytkowania to rozszerzenie, które pozwala na usuwanie duplikatów elementy AnySequence, zachowując kolejność:

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

Myślę, że jeśli zmiana już wprowadzono typ do tablicy, będzie szybciej. – masakih

+0

@masakih Co sprawia, że ​​się tego podejrzewasz? Zestawy mają 'O (1)' look up (potrzebne dla szybkiego 'zawiera (_ :) :) wywołania), podczas gdy tablica ma pętle O (n) w ogólnym przypadku – Alexander

+0

przepraszam! koncentrowałem się tylko na 'insert (_ :)'. ale przeoczyłem 'zawiera (_ :)'. – masakih

Powiązane problemy