从另一个Array <string>过滤Array <string>的值

时间:2015-10-17 09:24:25

标签: arrays swift filter

我有两个数组:

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

现在我要删除arr2arr1的所有值,因此上面示例中的预期结果为let arrFiltered = ["two.json"]。我知道如何使用for循环处理这个问题,但是,我认为可能有一个更简单,更面向性能的解决方案?

2 个答案:

答案 0 :(得分:5)

使用filter函数

的解决方案
let arr1 = ["one.json", "two.json", "three.json"]
let arr2 = ["one.json", "three.json"]

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

答案 1 :(得分: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(_ :)方法创建一个值不在指定集合中的新集合。

Read more