开发者社区> 问答> 正文

在Swift中从数组中删除重复的元素

我可能有一个看起来像下面的数组:

[1, 4, 2, 2, 6, 24, 15, 2, 60, 15, 6] 或者,实际上,是数据的相似类型部分的任何序列。我要做的是确保每个相同元素中只有一个。例如,上面的数组将变为:

[1, 4, 2, 6, 24, 15, 60] 注意,删除了2、6和15的重复项以确保每个相同元素中只有一个。Swift是否提供一种轻松实现此目的的方法,还是我必须自己做?

展开
收起
保持可爱mmm 2020-01-16 15:51:16 637 0
1 条回答
写回答
取消 提交回答
  • 您可以自己滚动,例如这样(已针对Swift 1.2的Set进行了更新):

    func uniq<S : SequenceType, T : Hashable where S.Generator.Element == T>(source: S) -> [T] { var buffer = T var added = Set () for elem in source { if !added.contains(elem) { buffer.append(elem) added.insert(elem) } } return buffer }

    let vals = [1, 4, 2, 2, 6, 24, 15, 2, 60, 15, 6] let uniqueVals = uniq(vals) // [1, 4, 2, 6, 24, 15, 60] Swift 3版本:

    func uniq<S : Sequence, T : Hashable>(source: S) -> [T] where S.Iterator.Element == T { var buffer = T var added = Set () for elem in source { if !added.contains(elem) { buffer.append(elem) added.insert(elem) } } return buffer } 并作为扩展Array:

    extension Array where Element: Hashable { var uniques: Array { var buffer = Array() var added = Set () for elem in self { if !added.contains(elem) { buffer.append(elem) added.insert(elem) } } return buffer } } 问题来源于stack overflow

    2020-01-16 15:51:32
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
OpenStack Swift 海量小文件优化之路 立即下载
From Java/Android to Swift iOS 立即下载
Swift在Airbnb的应用实践 立即下载