lunes, 9 de febrero de 2009

Ordenar array utilizando multiples elementos

Supongamos que tenemos un arreglo que tiene un objeto que tiene dos atributos llamados red_cards y yellow_cards (estos dos atributos son numericos), ahora lo que queremos hacer es ordenar el array primero por la cantidad de tarjetas rojas y luego por la cantidad de amarillas.

Lo podemos hacer de la siguiente manera:

array.sort! {|x, y| ((y.red_cards * 1000) + y.yellow_cards) <=> ((x.red_cards * 1000) + x.yellow_cards) }

Elegimos 1000 por que sabemos que nunca se va a tener ese numero de tarjetas.

No hay comentarios: