找到两个数组之间差异的最简单方法

时间:2018-10-10 20:00:42

标签: arrays swift

我有两个数组

print(">>>>>>>>>>>>>>>>>>>>>>deviceStartList")
dump(deviceStartList)
print(">>>>>>>>>>>>>>>>>>>>>>")

print(">>>>>>>>>>>>>>>>>>>>>>deviceEndList")
dump(deviceEndList)
print(">>>>>>>>>>>>>>>>>>>>>>")

它产生这个结果:

enter image description here

我来自PHP背景,可以打电话给array_diff()了。

人们将如何做呢?

3 个答案:

答案 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屏幕截图:

enter image description here

答案 1 :(得分:1)

您可以尝试

let result = deviceStartList.filter { deviceEndList.contains($0) == false }

我也强烈建议您使用 Set 方法,因为它是内部优化的,而不是通常的方法

答案 2 :(得分:1)

这是设置方式。希望它为您工作。

[['A', 'B'], ['B', 'D'], ['C', 'F'], ['D', 'F']]