我有两个哈希哈希看起来基本上像:
sales = {
"2013-03-15": {sales: 5},
"2013-03-14": {sales: 3},
"2013-03-12": {sales: 8},
... }
和
views = {
"2013-03-15": {views: 30},
"2013-03-14": {views: 23},
"2013-03-13": {views: 35},
... }
如何将它们合并为一个看似如下的哈希:
data = {
"2013-03-15": {views: 30, sales: 5},
"2013-03-14": {views: 23, sales: 3},
"2013-03-13": {views: 35, sales: 0}, # or just {views: 35}
... }
基本上,我需要保持密钥和所有数据的完整性。
data = views.merge sales
似乎覆盖了所有的观看数据,基本上只留下了销售哈希。
编辑:我还可以将销售或视图哈希转换为简单的哈希值(不是哈希哈希值),但我仍然不知道继续进行的好方法。
答案 0 :(得分:3)
此:
sales.merge(views) { |k, o, n| o.merge(n) }
可运行的例子:
views = {
"2013-03-15" => {:views=> 30},
"2013-03-14" => {:views=> 23},
"2013-03-13" => {:views=> 35},
}
sales = {
"2013-03-15" => {:sales=> 5},
"2013-03-14" => {:sales=> 3},
"2013-03-12" => {:sales=> 8},
}
puts sales.merge(views) { |k, o, n| o.merge(n) }
=> {"2013-03-15"=>{:sales=>5, :views=>30}, "2013-03-14"=>{:sales=>3, :views=>23}, "2013-03-12"=>{:sales=>8}, "2013-03-13"=>{:views=>35}}