使用新键将数组数组转换为哈希数组

时间:2018-01-25 05:24:33

标签: arrays ruby

我有这样的数组:

status = [
   ["Deleted", "deleted", 0],
   ["In planning", "planning", 1],
   ["In approval", "approval", 2]
]

如何将其转换为像这样的哈希数组?

[
  {:label => "Deleted", :value => "deleted"},
  {:label => "In planning", :value => "planning"},
  {:label => "In approval", :value => "approval"}
]

到目前为止,我试过了:

status.each do |s| label: s[0], value: s[1] end

然而,我没有得到一系列哈希。如果我这样做:

puts s[0], value: s[1]

我在控制台中只看到哈希:

{:label => "Deleted", :value => "deleted"}
{:label => "In planning", :value => "planning"}
{:label => "In approval", :value => "approval"}

我相信我不知何故需要将这些哈希值添加到数组中。

2 个答案:

答案 0 :(得分:2)

尝试以下方法:

status.map { |label, value, _| { label: label, value: value } }

答案 1 :(得分:1)

status.map{ |s| Hash[label: s[0], value: s[1]] }
# => [{:label=>"Deleted", :value=>"deleted"}, {:label=>"In planning", :value=>"planning"}, {:label=>"In approval", :value=>"approval"}]