ruby-on-rails – Rails将散列数组映射到单个散列

我有一个哈希数组,像这样:

 [{"testPARAM1"=>"testVAL1"}, {"testPARAM2"=>"testVAL2"}]

我试图将此映射到单个哈希像这样:

{"testPARAM2"=>"testVAL2", "testPARAM1"=>"testVAL1"}

我已经实现了它使用

  par={}
  mitem["params"].each { |h| h.each {|k,v| par[k]=v} } 

但是我想知道是否可能以更习惯的方式(最好不使用局部变量)。

我如何做到这一点?

你可以组成枚举#reduce和Hash#merge来完成你想要的。

input = [{"testPARAM1"=>"testVAL1"}, {"testPARAM2"=>"testVAL2"}]
input.reduce({}, :merge)
  is {"testPARAM2"=>"testVAL2", "testPARAM1"=>"testVAL1"}

减少数组排序,就像在它的每个元素之间粘贴一个方法调用。

例如[1,2,3] .reduce(0,:)就像说0 1 2 3并给出6。

在我们的例子中,我们做类似的事情,但使用合并两个哈希的合并函数。

[{:a => 1}, {:b => 2}, {:c => 3}].reduce({}, :merge)
  is {}.merge({:a => 1}.merge({:b => 2}.merge({:c => 3})))
  is {:a => 1, :b => 2, :c => 3}
翻译自:https://stackoverflow.com/questions/11856407/rails-mapping-array-of-hashes-onto-single-hash

转载注明原文:ruby-on-rails – Rails将散列数组映射到单个散列