2015-06-06 51 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

相關問題