Ruby obtiene claves de objeto como matriz

97

Soy nuevo en Ruby, si tengo un objeto como este

{"apple" => "fruit", "carrot" => "vegetable"}

¿Cómo puedo devolver una matriz de solo las claves?

["apple", "carrot"]
JD Isaacks
fuente
Su objeto es un Hash, por lo que puede usar un keysmétodo como {"apple" => "fruit", "carrot" => "vegetable"}.keys. Para obtener más información, visite ruby-doc.org/core-1.9.3
taro

Respuestas:

217
hash = {"apple" => "fruit", "carrot" => "vegetable"}
array = hash.keys   #=> ["apple", "carrot"]

Es así de simple

weezor
fuente
16

Una forma alternativa si necesita algo más (además de usar el keysmétodo):

hash = {"apple" => "fruit", "carrot" => "vegetable"}
array = hash.collect {|key,value| key }

obviamente, solo haría eso si desea manipular la matriz mientras la recupera ...

Tigraine
fuente
4

Como dijo taro, keysdevuelve la matriz de claves de su Hash:

http://ruby-doc.org/core-1.9.3/Hash.html#method-i-keys

Encontrarás todos los diferentes métodos disponibles para cada clase.

Si no sabe con qué está lidiando:

 puts my_unknown_variable.class.to_s

Esto generará el nombre de la clase.

iliptico
fuente
2

Usa el keysmétodo:{"apple" => "fruit", "carrot" => "vegetable"}.keys == ["apple", "carrot"]

ridecar2
fuente