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)