[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

sorting an array basedon two attributes of objects

senthil

3/26/2007 12:48:00 PM

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

3 Answers

Florian Groß

3/26/2007 12:54:00 PM

0

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.

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

Kind regards,
Florian Gross

MenTaLguY

3/26/2007 12:55:00 PM

0

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.

Is this what you had in mind?

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

-mental



Augie De Blieck Jr.

3/26/2007 12:55:00 PM

0

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