将数组与引用数组进行比较并删除重复项

时间:2018-06-14 14:43:17

标签: ios arrays swift

我无法理解如何在更多" swift"中重写这个表达式。高效的方式:

for result in results {
  var isExists = false

  for ref in referenceArray {
      if result.id == ref.id {
          isExists = true
          break
      }
  }

  if isExists == false {
      filteredResults.append(result)
  }
} 

我试过了:

filteredResults = results.filter { result in
   referenceArray.contains { $0.id != result.id }
}

但它给了我空数组。

感谢。

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,但听起来你想做这样的事情:

  

根据一组商品B和一组商品C,创建一组商品B,只包含A中的商品<{1}}中的

换句话说,我认为你正在寻找新的&#34; B中不存在A中已存在的内容。

如果您正在尝试这样做,可以使用Set。这是Int s的一个简单示例,但希望它会有所帮助:

let setA = Set([1,2,3,4,5,6,7,8,9,10])
let setB = Set([2,4,6,8,10,13])

// Only the values that overlap both sets
let evens = setA.intersection(setB)                // {6, 10, 2, 4, 8}

// Only the values that do not overlap both sets
let odds = setA.symmetricDifference(setB)          // {9, 5, 7, 3, 1, 13}  

// All unique elements in both sets
let uniqueToBoth = setA.union(setB)                // {13, 10, 2, 4, 9, 5, 6, 7, 3, 1, 8}

// Only elements unique to B
let uniqueToB = setB.subtracting(setA)             // {13}