【发布时间】:2019-05-26 11:14:49
【问题描述】:
我有 2 个String 数组:
let a = ["jan", "feb", "jun"]
let b = ["jan", "may", "feb"]
我需要检查a 数组的哪些元素不在b 数组中,并将结果存储在一个名为c 的数组中。
我尝试使用这个扩展来实现这一点:
extension Array where Element : Hashable {
func difference(from other: [Element]) -> [Element] {
let thisSet = Set(self)
let otherSet = Set(other)
return Array(thisSet.symmetricDifference(otherSet))
}
}
但它给我的结果是两个数组之间的差异(即“may”、“jun”),而我只需要a 数组中不在b 数组中的元素。我怎样才能做到这一点?
【问题讨论】:
-
你不需要把两个东西都做成集合,只需要其中一个。一个操作数只需要迭代(
Sequence就足够了),一个操作数需要有快速的contains性能(Set是必要的)。