From: Alex Young Date: 2007-03-26T23:11:08+09:00 Subject: Re: sorting an array based on two attributes of objects senthil wrote: > Thanks for some of your replies for the lst post i need small > modification in that post .. i want to sort the salary in descending > order. i have explained the same quesion again.... > > Hi all, > I want to sort the objects of array based on two attributes.I want > sort an employee class based on his salary in descecding order and name > , so that if two > person has same salary it should be sorted with name. > Lets say for example the employee objects has following name and > salary. > > name salary > d 100 > c 200 > b 50 > a 100 > > > so in this case the result which i expect is > > name salary > b 200 > a 100 > d 100 > c 50 > > Note:In the above example for salary 100 the sorting is done > alphabetically, but initially(before sorting) 'd' came first and then > 'a' came.so basically i want to sort the array with more than one order. > Can any one help me to solve it ?? > In this case, just invert the salary: sorted_employees = employees.sort_by { |e| [ -e.salary, e.name ] } I can't think of a way offhand to have different lexicographic orderings in the same sort, though. -- Alex