J'ai un tableau de hachages comme ceci:
[{"testPARAM1"=>"testVAL1"}, {"testPARAM2"=>"testVAL2"}]
Et j'essaie de mapper ceci sur un hachage unique comme ceci:
{"testPARAM2"=>"testVAL2", "testPARAM1"=>"testVAL1"}
Je l'ai réalisé en utilisant
par={}
mitem["params"].each { |h| h.each {|k,v| par[k]=v} }
Mais je me demandais s'il était possible de le faire de manière plus idiomatique (de préférence sans utiliser de variable locale).
Comment puis-je faire ceci?
ruby-on-rails
ruby
arrays
hash
Bart Platak
la source
la source
input.reduce(:merge)
?merge!
place,merge
cela modifiera le premier hachage (ce que vous ne voudrez peut-être pas) mais ne créera pas de hachage intermédiaire pour chaque nouvelle fusion.Que diriez-vous:
la source
Utilisez #inject
la source
Ici, vous pouvez utiliser injecter ou réduire à partir de la classe Enumerable , car les deux sont des alias l'un de l'autre, il n'y a donc aucun avantage en termes de performances.
la source