【问题标题】:How to remove duplicate elements inside an array - swift 3 [duplicate]如何删除数组中的重复元素 - swift 3 [重复]
【发布时间】:2017-08-12 18:25:54
【问题描述】:

我想从数组中删除重复元素。堆栈溢出有很多答案,但对于 swift 3。

我的数组:

var images = [InputSource]()
... // append to array

如何从这个数组中删除重复的元素?

swift 3 有没有原生 api ?

【问题讨论】:

标签: ios swift xcode swift3


【解决方案1】:

确保InputSource实现Hashable,否则Swift无法知道哪些元素相等,哪些不相等。

你只需这样做:

let withoutDuplicates = Array(Set(images))

解释:

images先变成一个集合。这将删除所有重复项,因为集合只能包含不同的元素。然后我们将集合转换回数组。

根据this answer,这可能是编译器优化的。

这样做的缺点是它可能无法保留原始数组的顺序。

【讨论】:

  • 如何将我的数组实现为 Hashable?
  • @S.M_Emamian hashcode 的实现有很多。这个想法是每个不同的实例都有不同的哈希码。如果两个实例具有相同的哈希码,则它们被视为“相等”。这是一个例子:stackoverflow.com/a/34705912/5133585
  • @S.M_Emamian:此答案中的示例 stackoverflow.com/a/34709118/1187415 到“重复”。
  • 这不会保留原始数组的元素顺序!
  • @ErikAigner 是的。添加了一条说明。
【解决方案2】:

如果顺序不重要,您应该改用Set。集合仅包含唯一元素。您还可以从数组中创建一个Set,这样可以消除重复项。

【讨论】:

    【解决方案3】:

    你可能想使用 Set

    // 初始化数组 var sample = [1,2,3,4,5,2,4,1,4,3,6,5]

    // 删除重复项: sample = Array(Set(sample))

    print(sample)

    【讨论】:

      猜你喜欢
      • 2014-11-02
      • 2013-05-20
      • 2013-03-23
      • 2018-02-14
      • 2011-03-22
      • 2018-11-04
      • 1970-01-01
      相关资源
      最近更新 更多