(Ruby) Hashの要素を非破壊的に削除する
こういう欲求に出くわすたびに一々調べて、思い出すのに割合時間を喰っている気がするので。 "Ruby"、"Hash"、"要素"、"非破壊的"、"削除"、でこの方法が引っかかる様にしたかったのが大きいです。
結論
reject
を使う。
[41] pry(main)> hash = {a: 1, b: 2, c: 3} => {:a=>1, :b=>2, :c=>3} [42] pry(main)> hash.reject {|key| key == :a} => {:b=>2, :c=>3} [43] pry(main)> hash => {:a=>1, :b=>2, :c=>3}
delete
は破壊的なので使いづらいですね。
ActiveSupportのHash#except
も手軽ですが、バニラなRubyだけで終わらせられると嬉しいこともあるので。
環境
[47] pry(main)> pry-version Pry version: 0.12.2 on Ruby 2.5.1.