获取Ruby中具有值的项目数

时间:2017-02-15 12:35:14

标签: ruby

我有一个像这样的数组:

search_results = [{policy: {isActive: true}}]

我希望获得search_result的计数,其中isActive为真。在这种情况下,数组只包含1个policy isActive对象为true的项目。

我尝试过:

search_results.group_by { |x| x.policy.isActive }.count

然而,我总是得到1。无论isActive是真还是假。

1 个答案:

答案 0 :(得分:1)

您使用[]访问哈希键值对,而非.

search_results.count { |hash| hash[:policy][:isActive] }

如果您使用的是较新的Ruby版本,则可以使用Hash#dig(Ruby 2.3+)和Enumerable#sum(Ruby 2.4 +):

search_results.sum { |hash| hash.dig(:policy, :isActive) }