我该怎么做:
[[3, 18], [5, 20], [7, 22]]
进入这个:
[
{:quantity=>3, :price=>18},
{:quantity=>5, :price=>20},
{:quantity=>7, :price=>22}
]
希望得到一个单行答案,但我会接受我能得到的。
答案 0 :(得分:4)
使用Array#map
:
a = [[3, 18], [5, 20], [7, 22]]
a.map { |item| {quantity: item[0], price: item[1]} }
# => [{:quantity=>3, :price=>18},
# {:quantity=>5, :price=>20},
# {:quantity=>7, :price=>22}]
a.map { |q, p| {quantity: q, price: p} }
# => [{:quantity=>3, :price=>18},
# {:quantity=>5, :price=>20},
# {:quantity=>7, :price=>22}]
a.map { |item| Hash[[:quantity, :price].zip(item)] }
# => [{:quantity=>3, :price=>18},
# {:quantity=>5, :price=>20},
# {:quantity=>7, :price=>22}]
答案 1 :(得分:2)
a = [[3, 18], [5, 20], [7, 22]]
a.map { |v1,v2| {:quantity => v1, :price => v2} }
答案 2 :(得分:0)
冒着击败死马的风险,我的版本,以及更好的命名
a.map {|(quantity, price)| {quantity: quantity, price: price} }