将 3 个数组组合成 Hash in Ruby on Rails

Combine 3 arrays into Hash in Ruby on Rails

我有 3 个数组:minmaxregions。我想为每个 region 创建一个具有相应 minmax 值的散列。像这样:

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

#=> {"Region1"=>["100", "500"], "Region 2"=>["200", "300"], ...}

这是我的代码:

@min = params[:min]
@max = params[:max]
@regions = params[:regions]

到目前为止我已经试过了,但没有成功:

@range_map = Hash[@regions.map{|r| [r, [@min.each.to_i,@max.each.to_i]]}]

我想要的只是来自 3 个数组的哈希值以及要转换为 integer.

的最小值和最大值

您可以尝试这样的操作,使用 zip and transpose:

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

#=> {"Region1"=>[100, 500], "Region2"=>[200, 300]}

Demonstration