que tienen una matriz que tiene el siguiente aspecto:¿Cómo realizo una clasificación personalizada compleja en Ruby?
[
{ type: 'A', price: '0.01' },
{ type: 'B', price: '4.23' },
{ type: 'D', price: '2.29' },
{ type: 'B', price: '3.38' },
{ type: 'C', price: '1.15' }
]
que necesitan agrupar éstos por type
y luego ordenarlos por orden ascendente price
. Puedo medio de resolver este problema de la siguiente manera:
boards.sort_by {|e| [e['type'], e['price'].to_f]}
Por desgracia, este ordena la type
s alfabéticamente cuando deberían estar ordenados BADC
¿Cómo puedo ordenar la matriz por las reglas predeterminadas?
la pregunta no está clara: ¿cuál es el resultado deseado? para productos del mismo tipo, ¿obtiene el que tiene el precio más bajo? y luego siempre ordena por PRECIO ASC? – tokland
Creo que quiere ordenar por tipo, y cuando el tipo es igual, quiere ordenar por precio. – sheldonh
@sheldonh. pero eso es exactamente lo que hace su código. Luego dice que la salida debe ordenarse "BADC", lo cual no tiene sentido (no hay precio ni orden de tipo allí ...) pero en cualquier caso parece que el tipo B se ha agrupado, por lo que realmente quiere agruparlo. Quién sabe ... – tokland