Ruby on rails 将哈希值与值合并
假设我有以下哈希数组Ruby on rails 将哈希值与值合并,ruby-on-rails,ruby,Ruby On Rails,Ruby,假设我有以下哈希数组 [ { created: '11/11/86', amount: 10, }, { created: '11/11/86', amount: 20, }, { created: '12/11/86', amount: 4, } ] 我想用相同的创建的键合并所有散列,结果如下: [ { created: '11/11/86', amount: 30, }, { cre
[
{
created: '11/11/86',
amount: 10,
},
{
created: '11/11/86',
amount: 20,
},
{
created: '12/11/86',
amount: 4,
}
]
我想用相同的创建的键合并所有散列,结果如下:
[
{
created: '11/11/86',
amount: 30,
},
{
created: '12/11/86',
amount: 4,
}
]
我意识到我可以使用循环,但我正在寻找更优雅的东西
散列可以有更多的键,但我只关心这2个键。您可以尝试使用map
和sum
(因为您使用的是rails):
第一步是:
arr.each_with_object(Hash.new(0)) { |g,h| h[g[:created]] += g[:amount] }
#=> {"11/11/86"=>30, "12/11/86"=>4}
散列。新的(0)
有时被称为计数散列。请参阅类方法 你试过什么吗?有什么比环更优雅?这就是我的问题。我有它的工作循环,但不知道是否有更好的方式比什么更好?你能分享你的解决方案吗?请阅读“包括链接页面和”。我们希望看到您为解决这个问题所做的努力,或者是您搜索了哪些页面以及为什么这些页面不起作用,或者是您的代码尝试以及为什么它没有达到您想要的效果。如果没有这些,看起来你是在要求我们为你工作。”“我会帮你的。
arr = [
{
created: '11/11/86',
amount: 10,
},
{
created: '11/11/86',
amount: 20,
},
{
created: '12/11/86',
amount: 4,
}
]
arr.each_with_object(Hash.new(0)) { |g,h| h[g[:created]] += g[:amount] }.
map { |k,v| { created: k, amount: v } }
#=> [{:created=>"11/11/86", :amount=>30}, {:created=>"12/11/86", :amount=>4}]
arr.each_with_object(Hash.new(0)) { |g,h| h[g[:created]] += g[:amount] }
#=> {"11/11/86"=>30, "12/11/86"=>4}