比较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的主要内容,如果未能解决你的问题,请参考以下文章

比较 3 个数组并在 javascript 中找到组合

C# 比较二个数组并找出相同或不同元素的方法

javascript js求和2个数组并返回一个新数组

存储数百万个数组并执行 IN 检查的有效方法

Python:元组列表:比较所有元组并检索元组的元素不等于任何其他元组的元组

比较两个 NSArray 并返回差异数