比较2个数组并列出差异 - Swift
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较2个数组并列出差异 - Swift相关的知识,希望对你有一定的参考价值。
我想知道如何比较2个布尔数组并列出不匹配的布尔值。
我写了一个2个数组的简单例子。
let array1 = [true, false, true, false]
let array2 = [true, true, true, true]
我如何比较array1和array2并显示不匹配。我试图这样做来检查测验游戏的用户结果。
谢谢!
答案
这是一个实现,但是它是否是你所追求的是完全不可能说,因为你没有指定你认为答案应该是:
let answer = zip(array1, array2).map {$0.0 == $0.1}
这给你一个Bool值列表,如果答案与正确答案匹配,则为true
,如果不匹配则为false
。
但是,让我们说你想要的是那些正确答案的索引列表。然后你可以说:
let answer = zip(array1, array2).enumerated().filter() {
$1.0 == $1.1
}.map{$0.0}
如果您想要那些不正确的答案的索引列表,只需将==
更改为!=
。
另一答案
最简单的方法是使用Set。集合有一个symmetricDifference()方法就是这样做的,所以你只需要将两个数组转换成一个集合,然后将结果转换回一个数组。
这是一个扩展,使其更容易:
extension Array where Element: Hashable {
func difference(from other: [Element]) -> [Element] {
let thisSet = Set(self)
let otherSet = Set(other)
return Array(thisSet.symmetricDifference(otherSet))
} }
这里有一些示例代码可供您试用:
let names1 = ["student", "class", "teacher"]
let names2 = ["class", "Teacher", "classroom"]
let difference = names1.difference(from: names2)
这会将差异设置为[“学生”,“教室”],因为这两个名称在两个数组中只出现一次。
以上是关于比较2个数组并列出差异 - Swift的主要内容,如果未能解决你的问题,请参考以下文章