转换这两个数组数组的最简洁方法是什么:
[[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键。
答案 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"}]