2016-11-05 4 views
0

У меня есть хэш, как показано ниже.Как получить наивысшее второе значение из хэша

myhash = {123=>["pizza", 9.99], 234=>["Bread", 132.0], 456=>["burgers", 5.24]} 

Я хочу, чтобы как-то получить его, чтобы показать только самый ценный объект, который в этом случае является хлебом.

Так что результат будет такой же, как

puts "234 Bread 132.0" 
+0

Предположим, что три значения: '9.99',' 132.0', '132.0'. '9.99' - это« второе наивысшее значение ». Это то, что вы хотите? –

ответ

4
highest_priced_object = myhash.max_by { |id, (item, price)| price } 
+0

А, спасибо. .last hmm. – jackneedshelp

+0

последнее или 'значение [1]' – Ursus

+0

или вы можете сделать 'значение [-1]' –

1

Max_by принимает блок, в котором можно определить значение, которое вы хотели бы использовать для сравнения. В этом случае второй (или последний) элемент в массиве. Наконец, join объединяет все в строку.

myhash.max_by { |_, values| values.last }.join(' ') 
Смежные вопросы