从另一个Array<String>筛选Array<String>的值

3

我有两个数组:

let arr1 = ["one.json", "two.json", "three.json"]
let arr2 = ["one.json", "three.json"]

现在我想要从arr1中删除所有arr2的值,所以在上面的例子中,我的预期结果将是let arrFiltered = ["two.json"]。我知道如何使用for循环来处理它,但是我想知道是否有更简单和性能更好的解决方案?


for循环是最快的解决方案。 - Darko
2个回答

5
使用 filter 函数实现的解决方案。
let arr1 = ["one.json", "two.json", "three.json"]
let arr2 = ["one.json", "three.json"]

let arrFiltered = arr1.filter{ !arr2.contains($0) }

强烈建议这个解决方案:每个人都需要学习过滤器。 - Maury Markowitz

5

在这种情况下,您需要使用Set而不是Array

let arr1 = Set(["one.json", "two.json", "three.json"])
let arr2 = Set(["one.json", "three.json"])

arr1.subtract(arr2)

基本集合操作

下图展示了两个集合a和b,以阴影区域表示各种集合操作的结果。

enter image description here

  • 使用intersect(_:)方法创建一个新的集合,其中仅包含两个集合中共同值。
  • 使用exclusiveOr(_:)方法创建一个新的集合,包含两个集合中的值,但不包括二者共有的值。
  • 使用union(_:)方法创建一个新的集合,其中包含两个集合中的所有值。
  • 使用subtract(_:)方法创建一个新的集合,其中包含不属于指定集合的值。

了解更多


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接