从哈希中删除密钥

时间:2016-04-19 12:31:00

标签: ruby-on-rails ruby hash

我必须删除所有代表空字符串的键,例如

inventory = {"4"=>"", "1"=>"51059441", "3"=>""}

结果应该是

inventory = {“1”=>“51059441”}

3 个答案:

答案 0 :(得分:1)

尝试reject

=> {"4"=>"", "1"=>"51059441", "3"=>""}.reject { |_, y| y.empty? }
#> {"1"=>"51059441"}

delete_if相同,但适用于副本。

答案 1 :(得分:1)

您可以使用Hash#delete_if

hash.delete_if {|k, v| !v.present? }
#=> {"1"=>"51059441"}

注意:present?是一种Rails方法。如果您只想删除空字符串和数组,则可以使用empty?

答案 2 :(得分:0)

你是在正确的轨道上,但哈希需要两个参数,键和值

inventory.reject{ |key, value| value == ""}

给出

{"1"=>"51059441"}