如何对这个哈希数组进行分组?

ben*_*ben 36 ruby group-by ruby-on-rails ruby-on-rails-3

我有这个哈希数组:

- :name: Ben
  :age: 18
- :name: David
  :age: 19
- :name: Sam
  :age: 18
Run Code Online (Sandbox Code Playgroud)

我需要将它们分组age,所以它们最终会像这样:

18:
- :name: Ben
  :age: 18
- :name: Sam
  :age: 18
19:
- :name: David
  :age: 19
Run Code Online (Sandbox Code Playgroud)

我试过这样做:

array = array.group_by &:age
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

NoMethodError (undefined method `age' for {:name=>"Ben", :age=>18}:Hash):
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我正在使用Rails 3.0.1和Ruby 1.9.2

KAR*_*ván 93

&:age意味着该group_by方法应该调用age数组项上的方法来获取数据组.age对于您的案例中的哈希项,未定义此方法.

这应该工作:

array.group_by { |d| d[:age] }
Run Code Online (Sandbox Code Playgroud)