arrays - Swift 3 使用集合和维护顺序从一个数组中删除存在于另一个数组中的对象

标签 arrays swift

<分区>

Array1 = [1, 2, 3, 4, 5, 6]

Array2 = [1,5]

我想得到:

Array1 = [2, 3, 4, 6]

我想通过使用 Set 来做到这一点,因为这些数组可能会变大。 保持数组的顺序也很重要。

最佳答案

用第二个数组中的所有元素创建一个集合, 然后过滤第一个数组以仅获取的元素 在集合中:

let array1 = [5, 4, 1, 2, 3, 4, 1, 2]
let array2 = [1, 5]

let set2 = Set(array2)
let result = array1.filter { !set2.contains($0) }

print(result) // [4, 2, 3, 4, 2]

这保留了第一个的顺序(和重复元素) 大批。如果第二个数组可以很大,则使用集合是有利的, 因为查找速度更快。

关于arrays - Swift 3 使用集合和维护顺序从一个数组中删除存在于另一个数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003574/

相关文章:

swift - 使用带有未知字典键的 Swift 4 Codable 协议(protocol)

ios - 当键盘出现 Swift 时出现移动 View 问题

ios - iOS 中 iMessage 扩展中导航栏后面可见的 Collection View

ios - 尝试从我的应用程序切换到设置,但它似乎又回来了……有点像

C - 如何在排序时不更改 int 数组的值

c++ - 查找二进制二维数组中的唯一行

c++ - 使用不符合 misra 规则的 #define 命令定义数组

swift - 在表格 View 单元格中处理 SWIFT 索引越界问题

javascript - 如何创建 div 的数组结构我匹配的 div id 与 data-id(其他子 div 的 id)?

php - 将表结构和数据复制到二维数组中