Sorting an array basedon two attributes of objects

Hi all,
     I want to sort the objects of array based on two attributes.I want
sort an employee class based on his salary 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
           c 50
           a 100
           d 100
           b 200

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

···

--
Posted via http://www.ruby-forum.com/.

Is this what you had in mind?

sorted_employees = employees.sort_by { |e| [ e.salary, e.name ] }

-mental

···

On Mon, 26 Mar 2007 21:48:17 +0900, senthil <senthilkumar@srishtisoft.com> wrote:

     I want to sort the objects of array based on two attributes.I want
sort an employee class based on his salary and name , so that if two
person has same salary it should be sorted with name.

I think you could try this:

results = person.sort_by { |p| [p.salary, p.name] }

That should sort by salary first, then name.

-Augie

···

On 3/26/07, senthil <senthilkumar@srishtisoft.com> wrote:

Hi all,
     I want to sort the objects of array based on two attributes.I want
sort an employee class based on his salary 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
           c 50
           a 100
           d 100
           b 200

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

--
Posted via http://www.ruby-forum.com/\.

Try this: employees.sort_by { |employee| [employee.salary,
employee.name] }

Kind regards,
Florian Gross

···

On 26 Mrz., 14:48, senthil <senthilku...@srishtisoft.com> wrote:

     I want to sort the objects of array based on two attributes.I want
sort an employee class based on his salary and name , so that if two
person has same salary it should be sorted with name.