remove reject from delete ruby

reject - remove field from hash ruby



Eliminar mĂșltiples pares de clave y valor del hash en Rails (3)

ActiveSupport que forma parte de Rails viene con varios métodos incorporados que pueden ayudarlo a lograr su objetivo.

Si solo desea eliminar algunos pares clave-valor, puede usar Hash#except!

number.except!(:a, :b, :c)

Si desea conservar el hash original, use Hash#except

new_hash = number.except!(:a, :b, :c) new_hash # => {:d=>4} number # => {:a=>1, :b=>2, :c=>3, :d=>4}

También puedes ir con Rails-free way:

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}

PD: el último ejemplo de código es muy lento, solo lo ofrezco como alternativa.

number = {:a => 1, :b => 2, :c => 3, :d => 4}

Tras evaluar una determinada condición, quiero eliminar el par clave-valor de a, b, c


o, más eficaz que la solución del segundo Chris, pero más corta que la primera:

%w"A B C".each{|v| number.delete(v)}


number.delete "A" number.delete "B" number.delete "C"

O, menos performante pero más conciso:

number.reject! {|k, v| %w"A B C".include? k }