Sorting an array based on two attributes of objects


#1

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 ??


#2

On Mar 26, 2007, at 9:57 AM, senthil wrote:

person has same salary it should be sorted with name.
so in this case the result which i expect is
order.
Can any one help me to solve it ??

[ [‘d’,100], [‘c’,200], [‘b’,50], [‘a’,100] ].sort_by {|ns|
[ - ns.last, ns.first ]}
=> [[“b”, 50], [“a”, 100], [“d”, 100], [“c”, 200]]

An array compares on its elements. (The only change from my earlier
response is to negate the salary for sorting purposes.)

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid