在Ruby / Rails中转换多维数组格式

时间:2014-03-20 06:13:04

标签: ruby-on-rails ruby arrays

我在下面有以下代码。

Group.all.collect {|group| [ group.name, group.id ]}.inspect

这个输出如下。

[["Bankruptcy Group", 1], ["PIA Group", 2], ["Liquidation Group", 3]]

我想转换为不同的格式,如下所示。

{"Bankruptcy Group" => 1, "PIA Group"=> 2, "Liquidation Group"=> 3}

我该怎么做?

4 个答案:

答案 0 :(得分:3)

[["Bankruptcy Group", 1], ["PIA Group", 2], ["Liquidation Group", 3]].to_h

答案 1 :(得分:2)

您可以直接创建哈希:

Group.all.inject({}) { |h, g| h[g.name] = g.id; h }

答案 2 :(得分:0)

array = Group.all.collect { |group| [ group.name, group.id ] }
hash = Hash[array]

答案 3 :(得分:0)

to_hEnumerable方法可用于将对象中的每个项目解释为[key, value]形式的数组时将可枚举对象转换为哈希:

Group.all.map { |g| [g.name, g.id] }.to_h

来自to_h的文档:

  

返回将enum解释为[key, value]对列表的结果。