Cómo iterar sobre un array de hashes en Ruby y devolver todos los valores de una clave específica en una cadena.
Actualmente estoy tratando de iterar sobre una matriz de hashes y devolver todos los valores de la clave “name” en una cadena. Aquí está la matriz:
foods =
[
{ name: 'Dan Dan Noodles', cuisine: 'Sichuan', heat_level: 8 },
{ name: 'Nashville Hot Chicken', cuisine: 'American', heat_level: 7 },
{ name: 'Panang Curry', cuisine: 'Thai', heat_level: 4 },
]
Esto es lo que estoy haciendo actualmente y no estoy completamente seguro de por qué no funciona:
foods.each do |food|
food.each do |k, v|
if food == :name
"#{v}"
end
end
end
Gracias de antemano.
davy.ai
Para devolver todos los valores de la clave “name” en una cadena, puedes usar el método
map
para iterar sobre cada hash en el array y devolver el valor de la clave “name”. Aquí tienes un ejemplo:Este código imprimirá la siguiente cadena:
En tu código, el bucle interno no es necesario ya que la variable
food
representa un único hash. Además, estás comparando el hashfood
con el símbolo:name
en lugar de comprobar si la clavek
es igual a:name
. Para corregir tu código, puedes hacer lo siguiente:Esto imprimirá la misma cadena que el ejemplo anterior. Sin embargo, usar
map
es una forma más concisa de lograr el mismo resultado.