Удаление нескольких пар ключей и значений из хэша в Rails number = {:a => 1, :b => 2, :c => 3, :d => 4} при оценке определенного условия я хочу удалить пару ключ-значение a, b, c Ответ 1 number.delete "A" number.delete "B" number.delete "C" Или, менее эффективный, но более краткий: number.reject! {|k, v| %w"A B C".include? k } Ответ 2 или, что более эффективно, чем второе решение Криса, но короче первого: %w"A B C".each{|v| number.delete(v)} Ответ 3 ActiveSupport, входящий в состав Rails, поставляется с несколькими встроенными методами, которые помогут вам достичь своей цели. Если вы просто хотите удалить несколько пар ключ-значение, вы можете использовать Hash # except! number.except!(:a, :b, :c) Если вы хотите сохранить исходный хэш, используйте Hash # except new_hash = number.except!(:a, :b, :c) new_hash # => {:d=>4} number # => {:a=>1, :b=>2, :c=>3, :d=>4} Вы также можете использовать Rails-бесплатный способ: new_hash = number.dup.tap do |hash| %i[a b c].each {|key| hash.delete(key)} end new_hash # => {:d=>4} number # => {:a=>1, :b=>2, :c=>3, :d=>4} P.S.: последний пример кода очень медленный, я просто предоставляю его в качестве альтернативы.
Ответ 1 number.delete "A" number.delete "B" number.delete "C" Или, менее эффективный, но более краткий: number.reject! {|k, v| %w"A B C".include? k }
Ответ 2 или, что более эффективно, чем второе решение Криса, но короче первого: %w"A B C".each{|v| number.delete(v)}
Ответ 3 ActiveSupport, входящий в состав Rails, поставляется с несколькими встроенными методами, которые помогут вам достичь своей цели. Если вы просто хотите удалить несколько пар ключ-значение, вы можете использовать Hash # except! number.except!(:a, :b, :c) Если вы хотите сохранить исходный хэш, используйте Hash # except new_hash = number.except!(:a, :b, :c) new_hash # => {:d=>4} number # => {:a=>1, :b=>2, :c=>3, :d=>4} Вы также можете использовать Rails-бесплатный способ: new_hash = number.dup.tap do |hash| %i[a b c].each {|key| hash.delete(key)} end new_hash # => {:d=>4} number # => {:a=>1, :b=>2, :c=>3, :d=>4} P.S.: последний пример кода очень медленный, я просто предоставляю его в качестве альтернативы.