Mit*_*ran 17 ruby arrays ruby-on-rails
我是哈希
{1=>true, 7=>false, 6=>true, 4=>false}
或类似的数组
[1, true], [7, false], [6, true], [4, false]]
要么
[true, false, true, false].
如何true在阵列中找到s 的数量?
Jör*_*tag 24
为了计算元素,你显然必须迭代集合.迭代Hash生成两元素Arrays,前两个实际上完全相同:
{ 1 => true, 7 => false, 6 => true, 4 => false }.count(&:last)
[[1, true], [7, false], [6, true], [4, false]].count(&:last)
Run Code Online (Sandbox Code Playgroud)
对于简单的Array情况,你可以这样做:
[true, false, true, false].count(true)
Run Code Online (Sandbox Code Playgroud)
这Array当然也是一样的Hash#values从你的Hash上面,这样你就可以用同样的方法上:
{ 1 => true, 7 => false, 6 => true, 4 => false }.values.count(true)
Run Code Online (Sandbox Code Playgroud)
如果你不知道你会得到哪三个,你可以使用这样的东西:
{ 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)
Run Code Online (Sandbox Code Playgroud)
使用可枚举#count:
hash.values.count(true)
array_of_pairs.map { |k, v| v }.count(true)
plain_array.count(true)
Run Code Online (Sandbox Code Playgroud)
更详细,但不创建中间数组:
hash_or_array_of_pairs.inject(0) { |acc, (k, v)| acc + (v == true ? 1 : 0) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10938 次 |
| 最近记录: |