Arrays 将两个数组转换为哈希对数组
我有两个阵列:Arrays 将两个数组转换为哈希对数组,arrays,ruby,hash,Arrays,Ruby,Hash,我有两个阵列: dates = [1,2,3] values = [10,20,30] 我怎样才能这样组合它们 [{date:1,value:10},{date:2,value:20}...etc] 另一种方法是: dates.each_with_index.map{|d,i| {:date=>d,:value=>values[i]}} # => [{:date=>1, :value=>10}, {:date=>2, :value=>20}, {:d
dates = [1,2,3]
values = [10,20,30]
我怎样才能这样组合它们
[{date:1,value:10},{date:2,value:20}...etc]
另一种方法是:
dates.each_with_index.map{|d,i| {:date=>d,:value=>values[i]}}
# => [{:date=>1, :value=>10}, {:date=>2, :value=>20}, {:date=>3, :value=>30}]
解决方案
dates = [1,2,3]
values = [10,20,30]
h = ([:date].product(dates)).zip([:value].product(values)).collect(&:to_h)
p h
输出
[{:date=>1, :value=>10}, {:date=>2, :value=>20}, {:date=>3, :value=>30}]
附言: 虽然上面的输出看起来不同,但它和您期望的一样——一个Ruby哈希。见下面的证据 产生
[{:date=>1, :value=>10}, {:date=>2, :value=>20}]
我觉得你看起来好多了。嗯
…etc
保存12个字符。
p [{date:1,value:10},{date:2,value:20}] # This is what you want
[{:date=>1, :value=>10}, {:date=>2, :value=>20}]