• 締切済み

ネストされたハッシュの値から要素を削除する方法

以下の様なハッシュ「target」に対し、idもしくはtag_idの値が""であるtarget["4"]の要素のみ削除したいと考えています。どなたか方法をご教授いただけないでしょうか。 target = {"0"=>{"id"=>"2", "tag_id"=>"3"}, "1"=>{"id"=>"3", "tag_id"=>"1"}, "2"=>{"id"=>"4", "tag_id"=>"1"}, "3"=>{"id"=>"5", "tag_id"=>"2"}, "4"=>{"id"=>"", "tag_id"=>""}}

みんなの回答

  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

target = {"0"=>{"id"=>"2", "tag_id"=>"3"}, "1"=>{"id"=>"3", "tag_id"=>"1"}, "2"=>{"id"=>"4", "tag_id"=>"1"}, "3"=>{"id"=>"5", "tag_id"=>"2"}, "4"=>{"id"=>"", "tag_id"=>""}} target.delete_if{|k,v| v["id"].empty? || v["tag_id"].empty?} # => {"0"=>{"id"=>"2", "tag_id"=>"3"}, "1"=>{"id"=>"3", "tag_id"=>"1"}, "2"=>{"id"=>" 4", "tag_id"=>"1"}, "3"=>{"id"=>"5", "tag_id"=>"2"}}

参考URL:
http://docs.ruby-lang.org/ja/2.1.0/class/Hash.html#I_DELETE_IF

関連するQ&A

専門家に質問してみよう