Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 获取没有空值的哈希长度_Ruby_Arrays_Ruby On Rails 4 - Fatal编程技术网

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