Is there a non-destructive way of deleting a key value pair from a hash?
For example, if you did
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.reject{|key, _| key == :foo}
or
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash = new_hash.dup
new_hash.delete(:foo)
then original_hash
is unchanged, and new_hash
is changed, but they're a tad verbose. However, if you did
original_hash = {:foo => :bar}
new_hash = original_hash
new_hash.delete(:foo)
then original_hash
is changed, which isn't what I want.
Is there a single method that does what I want?
Yes, you want reject
:
new_hash = original_hash.reject{|key, _| key == :foo}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With