2013-08-02 85 views
1

我有红宝石关系类的在轨道上的数组,我称之为使用@relations如何按名称属性对数组类进行排序?

例子:

@relations[0] {id => 13, name => 'Giovanni', age => 50} 
@relations[1] {id => 25, name => 'Astolf', age => 27} 
@relations[2] {id => 5, name => 'Bob', age => 37} 

我要作为排序依据的名称数组。它会列出如下:

@relations[0] {id => 25, name => 'Astolf', age => 27} 
@relations[1] {id => 5, name => 'Bob', age => 37} 
@relations[2] {id => 13, name => 'Giovanni', age => 50} 

我该怎么办?

回答

6

很简单:

@relations = [{:id => 13, :name => 'Giovanni', :age => 50}, 
       {:id => 25, :name => 'Astolf', :age => 27}, 
       {:id => 5, :name => 'Bob', :age => 37}] 

@relations.sort_by{|e| e[:name]} 
# => [{:id=>25, :name=>"Astolf", :age=>27}, 
#  {:id=>5, :name=>"Bob", :age=>37}, 
#  {:id=>13, :name=>"Giovanni", :age=>50}] 
+0

好吧,这真的是正确的。但是,如果名称是由另一个函数获得的?例如:@relations [0] .getname =>“Astolf”? – kamusett

+0

我在这个网站上找到:http://ariejan.net/2007/01/28/ruby-sort-an-array-of-objects-by-an-attribute/。谢谢。 – kamusett

相关问题