Sort object array by object attribute : sort « Array « Ruby

Home
Ruby
1.ActiveRecord
2.Array
3.CGI
4.Class
5.Collections
6.Database
7.Date
8.Design Patterns
9.Development
10.File Directory
11.GUI
12.Hash
13.Language Basics
14.Method
15.Network
16.Number
17.Rails
18.Range
19.Reflection
20.Statement
21.String
22.Threads
23.Time
24.Tk
25.Unit Test
26.Windows Platform
27.XML
Ruby » Array » sort 
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"59)
people << Person.new("B"24)
people << Person.new("C"68)
people << Person.new("D"33)

p1 = people.sort_by(:name)
p2 = people.sort_by(:age)
p3 = people.sort_by(:height)

p p1   
p p2   
p p3   

 
Related examples in the same category
1.apply the sort (or sort!, for in-place changes)
2.Get the top 5 elements
3.Get the bottom 5 elements
4.ArgumentError: comparison of Fixnum with String failed
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.