Um die Elemente zu zählen, müssen Sie offensichtlich über die Sammlung iterieren. Seit mehr als einem Iterieren Hash
ergibt zwei Elementen Array
s, die ersten beiden sind eigentlich genau das gleiche:
{ 1 => true, 7 => false, 6 => true, 4 => false }.count(&:last)
[[1, true], [7, false], [6, true], [4, false]].count(&:last)
Für den einfachen Array
Fall Sie so etwas tun könnte:
[true, false, true, false].count(true)
Diese Array
ist natürlich auch das gleiche wie die Hash#values
von Ihrem Hash
oben, so dass Sie die gleiche Methode dafür verwenden könnten:
{ 1 => true, 7 => false, 6 => true, 4 => false }.values.count(true)
Wenn Sie nicht wissen, welche eine von drei Sie erhalten, könnten Sie so etwas wie folgt verwenden:
{ 1 => true, 7 => false, 6 => true, 4 => false }.flatten.count(true)
[[1, true], [7, false], [6, true], [4, false]].flatten.count(true)
[true, false, true, false].flatten.count(true)
Fantastische Lösungen, danke für alle, die die Antwort suchen :) – sidney
Easy one! Vielen Dank – Vlad