filters = {
"start_year" => "2009",
"end_year" => "2011",
"theme" => "",
"discipline" => ""
}
filters.length
是4
,但我想2
获取哈希的长度,不空值
filters = {
"start_year" => "2009",
"end_year" => "2011",
"theme" => "",
"discipline" => ""
}
filters.length
是4
,但我想2
获取哈希的长度,不空值
解析json字符串。使用Enumerable#select
require 'json'
json_string = <<EOS
{
"filters": {
"start_year": "2009",
"end_year": "2011",
"theme": "",
"discipline": ""
}
}
EOS
h = JSON.parse(json_string)
和过滤值:
h['filters'].values.select { |x| x != "" }
# => ["2009", "2011"]
h['filters'].values.select { |x| x != "" }.size
# => 2
filters.values.reject(&:empty?).length
如果空值保存为nil
,而不是''
你可以使用:
filters.values.compact.length
你的哈希看起来很奇怪 – Stefan 2014-09-24 13:24:24
它既不是有效的Ruby对象也不是有效的JSON对象。 – sawa 2014-09-24 13:25:37
什么是“过滤器”? – sawa 2014-09-24 13:32:03