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}