如何迭代ruby中的哈希数组数组

时间:2015-06-15 09:48:10

标签: ruby-on-rails ruby hash

我有一个列表如下:

order = [
  {term: 201, x: 2},
  {term: 201, y: 7},
  {term: 201, z: 2},
  {term: 202, a: 3},
  {term: 202, b: 4},
  {term: 202, c: 0}
]

我怎样才能得到这个结果?

[
  {term: 201, x: 2, y: 7, z: 2},
  {term: 202, a: 3, b: 4, c: 0},
]

1 个答案:

答案 0 :(得分:4)

您可以使用group_by方法:

order.group_by { |h| h[:term] }
     .map { |_, v| v.inject(:update) }
# => [{:term=>201, :x=>2, :y=>7, :z=>2}, {:term=>202, :a=>3, :b=>4, :c=>0}]
  • 按照术语编号对小哈希进行分组。

  • 然后迭代每组小哈希。

  • 迭代合并所有小哈希以制作单个哈希。