我有两个数组
print(">>>>>>>>>>>>>>>>>>>>>>deviceStartList")
dump(deviceStartList)
print(">>>>>>>>>>>>>>>>>>>>>>")
和
print(">>>>>>>>>>>>>>>>>>>>>>deviceEndList")
dump(deviceEndList)
print(">>>>>>>>>>>>>>>>>>>>>>")
它产生这个结果:
我来自PHP背景,可以打电话给array_diff()
了。
人们将如何做呢?
答案 0 :(得分:2)
如果您想做类似集合减法的事情,Swift就有了。参见Set operations (union, intersection) on Swift array?。
上面的SO帖子的标题本身没有 提及方法subtract(_:)
或subtracting(_:)
,但是接受的答案的内容确实引用了{{1} }。
在 Swift 4.1 中,您可以执行以下操作:
subtract(_:)
如果您需要一个数组作为最终输出,则可以通过执行以下操作获得该信息:
var deviceStartList = ["12345", "67890", "55555", "44444"]
var deviceEndList = ["12345", "55555"]
var deviceStartSet = Set<String>(deviceStartList)
var deviceEndSet = Set<String>(deviceEndList)
let devicesDiff = deviceStartSet.subtracting(deviceEndSet)
以下是此功能的Playground屏幕截图:
答案 1 :(得分:1)
您可以尝试
let result = deviceStartList.filter { deviceEndList.contains($0) == false }
我也强烈建议您使用 Set 方法,因为它是内部优化的,而不是通常的方法
答案 2 :(得分:1)
这是设置方式。希望它为您工作。
[['A', 'B'], ['B', 'D'], ['C', 'F'], ['D', 'F']]