2017-06-27 49 views
1

我有一個包含200個項目的數組。這是真還是假:Swift - 如何計算特定值的數組中的項?

let shouldMascotChangeVotes: [Bool] = [false, false, false, true, false, true, true, true, false, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, true, true, true, true, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, false, true, true, false, true, false, false, true, false, true, true, false, false, true, false, true, true, true, false, true, true, false, false, true, false, true, true, false, false, false, true, false, true, true, false, true, true, true, true, true, true, true, false, true, false, true, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, false, false, false, false, true, true, true, false, true, true, false, false, true, false, false, true, true, true, true, false, true, true, true, true, false, true, true, false, true, false, false, true, true, false, true, false, false, false, true, false, false, false, true, false, true, true, false, true, true, false, true, true, true, false, false, false, true, false, true, false, true, true, true, true, false, true, false, false, true, true, true, true, true, false] 

我知道如何計算數組中的全部項目,但我需要能夠在陣列中來算只是真或假的值。我怎麼做?

shouldMascotChangeVotes.count // returns 200 

回答

1

我不確定您的實際表現有多重要,但您可以做這樣的事情,例如。

import UIKit 

let shouldMascotChangeVotes: [Bool] = [false, false, false, true, false, true, true, true, false, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, true, true, true, true, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, false, true, true, false, true, false, false, true, false, true, true, false, false, true, false, true, true, true, false, true, true, false, false, true, false, true, true, false, false, false, true, false, true, true, false, true, true, true, true, true, true, true, false, true, false, true, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, false, false, false, false, true, true, true, false, true, true, false, false, true, false, false, true, true, true, true, false, true, true, true, true, false, true, true, false, true, false, false, true, true, false, true, false, false, false, true, false, false, false, true, false, true, true, false, true, true, false, true, true, true, false, false, false, true, false, true, false, true, true, true, true, false, true, false, false, true, true, true, true, true, false] 

let countableSet = NSCountedSet() 

shouldMascotChangeVotes.forEach { (item: Bool) in 
    countableSet.add(item) 
} 

debugPrint(countableSet.count(for: true)) // 125 
debugPrint(countableSet.count(for: false)) // 75 

注:也許不是最有效的解決方案,但它的工作;該片段直接來自遊樂場。

+0

看起來你正在繪製一些較舊的Objective-C代碼?當我嘗試在Playgrounds中運行時,出現錯誤。 Swift中有什麼可以在這種情況下工作嗎? – fmz

+0

wot?這是最新的_Swift_並且像魅力一樣工作 - 我剛剛從我的遊樂場粘貼;如果您刪除了該行,請添加「import UIKit」。 – holex

+0

holex,是添加導入UIKit造成的差異。謝謝。 – fmz

2
shouldMascotChangeVotes.filter{$0 == true}.count 

可以先篩選,然後指望它。

+0

嗨TPN。如果我運行,我會得到以下結果:(201次)。有些事情並不完全正確。 – fmz

+0

代碼沒有問題,但可以使用'{$ 0}'簡化。 – Sulthan

+0

是的,我知道:)但我想我會離開它只是爲了更好地傳達解決方案。但是,你是對的,它可以只是{$ 0} – TNguyen

1

您也可以嘗試使用reduce()。爲了演示目的,我做了兩次。你實際上可以使用總數並做出改變。

let shouldMascotChangeVotes: [Bool] = [false, false, false, true, false, true, true, true, false, true, true, true, true, false, true, true, false, true, true, true, false, true, true, true, true, true, true, true, false, true, false, true, false, true, true, false, false, true, true, false, false, true, true, true, false, true, false, true, true, false, true, true, false, true, false, false, true, false, true, true, false, false, true, false, true, true, true, false, true, true, false, false, true, false, true, true, false, false, false, true, false, true, true, false, true, true, true, true, true, true, true, false, true, false, true, false, true, true, true, true, true, true, true, false, true, true, false, true, true, true, true, true, true, true, false, true, true, false, true, true, false, true, true, true, true, true, false, false, false, false, true, true, true, false, true, true, false, false, true, false, false, true, true, true, true, false, true, true, true, true, false, true, true, false, true, false, false, true, true, false, true, false, false, false, true, false, false, false, true, false, true, true, false, true, true, false, true, true, true, false, false, false, true, false, true, false, true, true, true, true, false, true, false, false, true, true, true, true, true, false] 

var trueFalseCount: (trues: Int, falses: Int) 

trueFalseCount.trues = shouldMascotChangeVotes.reduce(0) { $0 + ($1 ? 1 : 0) } 
trueFalseCount.falses = shouldMascotChangeVotes.reduce(0) { $0 + ($1 ? 0 : 1) } 

print(trueFalseCount) // (trues: 125, falses: 75) 
相關問題