2012-01-01 10 views
11
a = { 
     1 => ["walmart", "walmart.com", 300.0], 
     2 => ["amazon", "amazon.com", 350.0], 
     ... 
    } 

¿Cómo puedo encontrar el elemento con el valor más bajo del valor de flotación en su matriz?Encuentra el valor más bajo en un hash

Respuesta

-4

Consulte la solución min_by en la respuesta a continuación. Mi respuesta original a esta pregunta fue mucho menos eficiente, como se señala en el comentario.

+7

-1. Este es el algoritmo incorrecto en general ya que es 'O (N log (N))' cuando hay una solución 'O (N)'. –

25

min_by está disponible como un método del módulo Enumerable.

Obtiene la matriz de todos los valores en el Hash, y luego selecciona el valor mínimo basado en el último elemento de cada matriz.

a.values.min_by(&:last) 
2

Otro método útil es sort_by desde el módulo Enumerable también. Organizará su hash de orden ascendente. Luego encadena el método con first para obtener el valor más bajo.

a.sort_by { |key, value| value }.first 
Cuestiones relacionadas