2015-06-06 46 views
5

我想知道如何比较2个布尔数组并列出不匹配的布尔值。比较2个数组并列出差异 - Swift

我写了一个2数组的简单例子。

let array1 = [true, false, true, false] 
let array2 = [true, true, true, true] 

我如何比较阵列1 &数组2和显示非匹配。我正在尝试执行此操作来检查用户测验游戏的结果。

谢谢!

+0

你真的不知道吗? – dasdom

+0

问题是,你不清楚你认为答案是什么。你希望/期待这个特定输入的结果是什么?你想要一个索引列表吗?数组?什么?如果一个人拥有比另一个更多的布尔值,那么答案是什么?如果一个人是空的? – matt

+0

该数组应该是什么样子?你必须_specify_!你脑子里的“正确答案”是什么? – matt

回答

24

这里的一个实现,但无论是一个你追求的是完全不可能说,因为你没有指定你认为答案应该是:

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} 

如果你想这些答案的索引列表是正确的,只是改变==!=

+0

增加了另一个实现,我们假设你想要的是正确或错误答案的_indexes_列表。 – matt

+0

欣赏它!非常感谢你。 – simlimsd3

+6

真正伟大的事情是,这个答案设法将'map','filter','zip'和'enumerate'放在一起 - 为了在Swift中使用数组,需要了解的关键事项只有'reduce'被省略 - 在这个问题中找不到它的用处)。 :) – matt

相关问题