2016-11-13 59 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