Ruby 获取没有空值的哈希长度
Ruby 获取没有空值的哈希长度,ruby,arrays,ruby-on-rails-4,Ruby,Arrays,Ruby On Rails 4,filters.length是4,但我想得到2(那些不仅有一个键,而且还有一个值的)您可以使用 filters = { "start_year" => "2009", "end_year" => "2011", "theme" => "", "discipline" => "" } 解析json字符串 filters.reject { |k, v| v.empty? }.length # => 2 使用: 如果将空值保存为nil而不是',则可以使
filters.length
是4
,但我想得到2
(那些不仅有一个键,而且还有一个值的)您可以使用
filters = {
"start_year" => "2009",
"end_year" => "2011",
"theme" => "",
"discipline" => ""
}
解析json字符串
filters.reject { |k, v| v.empty? }.length # => 2
使用:
如果将空值保存为nil
而不是'
,则可以使用:
filters.values.reject(&:empty?).length
过滤器来自哪里?@sawa补充了我的假设谢谢!这确实是一个ruby哈希;)@PaulH我对您的问题进行了编辑,以反映它既不是有效的Ruby对象,也不是有效的JSON对象。过滤器来自哪里?来自问题:)。“filters.length
将是4,…”。我想知道问题中的描述有何意义。如果假设他(不知何故)得到了一个答案(4),那么假设一个有效的散列也是有意义的。
h['filters'].values.select { |x| x != "" }
# => ["2009", "2011"]
h['filters'].values.select { |x| x != "" }.size
# => 2
filters = {"start_year"=>"2009", "end_year"=>"2011", "theme"=>"", "discipline"=>""}
filters.count { |k, v| v.present? }
#=> 2
filters.values.reject(&:empty?).length
filters.values.compact.length