如何从数组中删除与另一个数组中的元素匹配的元素

Ben*_*air 4 arrays swift

如何从数组中删除与另一个数组中的元素匹配的元素?

假设我们有一个数组,我们遍历它并找出要删除的元素:

var sourceItems = [ ... ]
var removedItems = [SKShapeNode]()

for item : SKShapeNode in sourceItems {
    if item.position.y > self.size.height {
        removedItems.append(item)
        item.removeFromParent()
    }
}

sourceItems -= removedItems // well that won't work.
Run Code Online (Sandbox Code Playgroud)

Chr*_*ner 10

你可以使用这个filter功能.

let a = [1, 2, 3]
let b = [2, 3, 4]

let result = a.filter { element in
    return !b.contains(element)
}
Run Code Online (Sandbox Code Playgroud)

result 将会 [1]

或者更简洁......

let result = a.filter { !b.contains($0) }

查看Swift标准库参考

或者您可以使用该Set类型.

let c = Set<Int>([1, 2, 3])
let d = Set<Int>([2, 3, 4])
c.subtract(d)
Run Code Online (Sandbox Code Playgroud)

  • 以前在Swift 1.x中我们使用`!contains(b,element)`.现在在Swift 2.x中我们使用`!b.contains(element)` (3认同)