Tengo una variedad de hashes como este:
[{"testPARAM1"=>"testVAL1"}, {"testPARAM2"=>"testVAL2"}]
Y estoy tratando de mapear esto en un solo hash como este:
{"testPARAM2"=>"testVAL2", "testPARAM1"=>"testVAL1"}
Lo he logrado usando
par={}
mitem["params"].each { |h| h.each {|k,v| par[k]=v} }
Pero me preguntaba si es posible hacer esto de una manera más idiomática (preferiblemente sin usar una variable local).
¿Cómo puedo hacer esto?
ruby-on-rails
ruby
arrays
hash
Bart Platak
fuente
fuente
input.reduce(:merge)
?merge!
lugar demerge
, modificará el primer hash (que es posible que no desee) pero no creará un hash intermedio para cada nueva combinación.Qué tal si:
fuente
Utilice #inject
fuente
Aquí puede usar inyectar o reducir de la clase Enumerable , ya que ambos son alias entre sí, por lo que no hay beneficio de rendimiento para ninguno.
fuente