使用正则表达式获取哈希值

时间:2015-06-05 10:21:41

标签: ruby regex

我有这样的哈希

hash_variable = {"74"=> {"x"=>{"order_id"=>"3643731"}, "x"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}}

注意:"x" -> 1..n来自每个的索引。

如果detail_idnil,我想拒绝哈希。我尝试使用正则表达式:

hash_variable.each do |items|
  unless items[/(\d+)/][:detail_id].nil?
    p items
  end
end
# => `NoMethodError: undefined method '[]' for nil:NilClass`

我可以将正则表达式用于" x"得到任何哈希有detail_id密钥?如果没有,如果detail_id为零,我该如何拒绝哈希?

1 个答案:

答案 0 :(得分:1)

好的,我已经解决了我的问题。

hash_variable = {"74"=> {"0"=>{"order_id"=>"3643731"}, "1"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}}
hash_variable.each do |key,items|
 p items.select { |k,v| !v['detail_id'].nil? }
end
# {"1"=>{"order_id"=>"618787", "detail_id"=>"115", "qty"=>"1"}}

从tadman的建议更新上述

hash_variable.each do |key,items|
 p items.select { |k,v| v['detail_id'] }
end