Mega Code Archive

 
Categories / Ruby / Array
 

Sort object array by object attribute

class Person   attr_reader :name, :age, :height   def initialize(name, age, height)     @name, @age, @height = name, age, height   end   def inspect     "#@name #@age #@height"   end end class Array   def sort_by(sym)     self.sort {|x,y| x.send(sym) <=> y.send(sym) }   end end people = [] people << Person.new("A", 5, 9) people << Person.new("B", 2, 4) people << Person.new("C", 6, 8) people << Person.new("D", 3, 3) p1 = people.sort_by(:name) p2 = people.sort_by(:age) p3 = people.sort_by(:height) p p1    p p2    p p3