合并哈希与价值

Car*_*ham -2 ruby ruby-on-rails

假设我有以下哈希数组

[
  {
    created: '11/11/86',
    amount: 10,
  },
  {
    created: '11/11/86',
    amount: 20,
  },
  {
    created: '12/11/86',
    amount: 4,
  }
]
Run Code Online (Sandbox Code Playgroud)

我想将所有哈希值与相同的created键合并,结果如下:

[
  {
    created: '11/11/86',
    amount: 30,
  },
  {
    created: '12/11/86',
    amount: 4,
  }
]
Run Code Online (Sandbox Code Playgroud)

我意识到我可以使用循环,但我正在寻找更优雅的东西.

哈希可能有更多的键,但我只关心这2.

pot*_*hin 5

您可以尝试使用mapsum(因为您使用的是rails):

arr.group_by{|x| x[:created]}.map{|date, x|
  {
    created: date,
    amount: x.sum{|xx| xx[:amount]}
  } 
}

# => {:created=>"11/11/86", :amount=>30}, {:created=>"12/11/86", :amount=>4}]
Run Code Online (Sandbox Code Playgroud)