Ruby:将二维数组合并为一个哈希数组

时间:2014-09-17 05:25:01

标签: ruby arrays hash

转换这两个数组数组的最简洁方法是什么:

[[1, 'a'], [2, 'b']]

[[1, 'c'], [2, 'd']]

到具有任意键的单个哈希数组中,如下所示:

[{:id => 1, :foo => 'a', :bar => 'c'}, {:id => 2, :foo => 'b', :bar => 'd'}]

详细说明,每个内部数组的位置0应映射到:id键,第一个数组的内部数组的位置1应映射到:foo键,第二个数组的内部数组的位置1应该映射到:bar键。此外,每个哈希的:id键不应重复,每个哈希应该有:id,:foo和:bar键。

1 个答案:

答案 0 :(得分:1)

通过分解块变量来澄清:

a = [[1, 'a'], [2, 'b']]
b = [[1, 'c'], [2, 'd']]

a.zip(b).map { |(id,foo),(_,bar)| {id: id, foo: foo, bar: bar } }
  #=> [{:id=>1, :foo=>"a", :bar=>"c"}, {:id=>2, :foo=>"b", :bar=>"d"}]