В вашем примере есть массив из двух элементов. Эти два элемента представляют собой хеши с парами ключ / значение. Вы можете l oop через массив с помощью метода #each
и получить доступ к значениям, которые хранятся в ключах :"ingredients"
следующим образом:
aoh.each do |hash|
hash[:ingredients]
end
Каждый из ключей :ingredients
хранит другой массив хешей. Пример ha sh:
{ "unit": "cl",
"amount": 6,
"ingredient": "Gin" }
Затем вы можете получить доступ к значению под ключом :ingredient
, выполнив hash[:ingredient]
. Окончательный результат выглядит примерно так:
aoh.each do |array_element|
array_element[:ingredients].each do |ingredient|
ingredient[:ingredient]
end
end
В настоящее время выполняется только итерация по массивам и хешам. Если вы хотите распечатать результат, вы можете сделать это:
aoh.each do |array_element|
array_element[:ingredients].each do |ingredient|
puts ingredient[:ingredient]
end
end
#=> Gin
# Vodka
# Lillet Blonde
# White rum
# Lime juice
# Syrup
Если вы хотите получить модифицированный массив, вы можете использовать #map
(или #flat_map
). Вы также можете получить сумму со следующим значением:
aoh.flat_map do |array_element|
array_element[:ingredients].map do |ingredient|
[[ingredient[:ingredient], ingredient[:amount]]
end
end
#=> [["Gin", 6], ["Vodka", 1.5], ["Lillet Blonde", 0.75], ["White rum", 4.5], ["Lime juice", 2], ["Syrup", 1]]