Sorting an array with multiple parameters


We can use sort_by and pass it an array like this:

>> a
=> [{:term=>"Spring", :year=>2008, :subject=>"math", :course=>100}, 
    {:term=>"Fall",   :year=>2008, :subject=>"math", :course=>200}, 
    {:term=>"Fall",   :year=>2008, :subject=>"engl", :course=>100}, 
    {:term=>"Spring", :year=>2008, :subject=>"math", :course=>99}, 
    {:term=>"Fall",   :year=>2008, :subject=>"math", :course=>100}]
>> a.sort_by{|x| [x[:term], x[:year], x[:course], x[:subject]]}
=> [ {:term=>"Fall",   :year=>2008, :subject=>"engl", :course=>100}, 
     {:term=>"Fall",   :year=>2008, :subject=>"math", :course=>100}, 
    {:term=>"Fall",   :year=>2008, :subject=>"math", :course=>200}, 
    {:term=>"Spring", :year=>2008, :subject=>"math", :course=>99}, 
    {:term=>"Spring", :year=>2008, :subject=>"math", :course=>100}]
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s