在Ruby on Rails中将3个数组组合成Hash

The*_*ion 1 ruby arrays ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有3个数组:min,maxregions.我想为每个region对应的minmax值创建一个哈希.像这样的东西:

regions=["Region 1","Region 2",....]
min=["100","200",...]
max=["500","300",...]

#=> {"Region1"=>["100", "500"], "Region 2"=>["200", "300"], ...}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

@min = params[:min]
@max = params[:max]
@regions = params[:regions]
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经尝试了这个,但没有奏效:

@range_map = Hash[@regions.map{|r| [r, [@min.each.to_i,@max.each.to_i]]}]
Run Code Online (Sandbox Code Playgroud)

我想要的只是来自3个数组的散列,并且min和max被转换为整数.

pot*_*hin 5

您可以尝试这样的事情,使用ziptranspose:

range_map = regions.zip([min.map(&:to_i), max.map(&:to_i)].transpose).to_h

#=> {"Region1"=>[100, 500], "Region2"=>[200, 300]}
Run Code Online (Sandbox Code Playgroud)

示范