#ruby #arrays #sorting #hash #enums
#ruby #массивы #сортировка #хэш #перечисления
Вопрос:
У меня есть хэши внутри массива с elem
именами, и я должен получить ключи «типа», которые имеют наибольшее значение «count».
Я знаю, что перечислители — это отличная вещь, которую нужно знать, но я не очень хорошо их понимаю.
elem = [{"type"=>"dododo", "count"=>0, "name"=>"dododo's", "tip"=>"dododo's Level"},
{"type"=>"dadada", "count"=>1203, "name"=>"dadada's", "tip"=>"dadada's Degree"},
{"type"=>"dedede", "count"=>717, "name"=>"dedede's", "tip"=>"dedede's Degree"},
{"type"=>"dididi", "count"=>6, "name"=>"dididi's", "tip"=>"dididi or Professional Degree"}]
Я пытаюсь это:
elem.each do |i|
i.each_with_index do |k,v|
puts v["count"]
end
end
но я знаю, что пропустил какой-то шаг.
Я знаю, что такого рода «маневры» довольно распространены и важны для понимания.
Комментарии:
1. Возможно, вы захотите отредактировать заголовок для записи, поскольку вы не сортируете, а тем более не сортируете хэш. Может быть, что-то вроде: «Как мне извлечь определенное значение хэша из массива хэшей?
Ответ №1:
Один из способов сделать это — использовать перечислимый#max_by
elem = [
{"type"=>"dododo", "count"=>0, "name"=>"dododo's", "tip"=>"dododo's Level"},
{"type"=>"dadada", "count"=>1203, "name"=>"dadada's", "tip"=>"dadada's Degree"},
{"type"=>"dedede", "count"=>717, "name"=>"dedede's", "tip"=>"dedede's Degree"},
{"type"=>"dididi", "count"=>6, "name"=>"dididi's", "tip"=>"dididi or Professional Degree"}
]
max_elem = elem.max_by {|e| e['count']}
puts max_elem['type']
# returns dadada
Комментарии:
1. Большое спасибо @infused ! спасибо за быстрый ответ 🙂