2011-12-28 20 views
75

Soy nuevo en Rubí, si tengo un objeto como ésteRubí obtener las claves de objeto como matriz

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

¿Cómo puedo devolver una matriz de sólo las llaves?

["apple", "carrot"] 
+0

Su objetivo es un hash, por lo que puede usar el método 'keys' como' {"apple" => "fruit", "carrot" => "vegetable"}. keys'. Para obtener más información, visite http://ruby-doc.org/core-1.9.3/ – taro

Respuesta

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

es así de simple

+1

+1 gracias, (no puedo aceptar su respuesta hasta el límite de tiempo) –

1

Utilice la keys método: {"apple" => "fruit", "carrot" => "vegetable"}.keys == ["apple", "carrot"]

4

como el taro dijo keys, devuelve el conjunto de teclas de su Hash:

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

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

Si usted no sabe lo que está tratando con:

salida
puts my_unknown_variable.class.to_s 

Esta voluntad el nombre de la clase.

+0

+1 información muy útil. Gracias. –

+0

+1 para el enlace a los documentos hash. Los principiantes de Ruby deberían familiarizarse íntimamente con los métodos Hash, String, Array y Enumerable. –

12

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

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

, obviamente, sólo haría que si se quiere manipular la matriz, mientras que la recuperación ..

+0

No me di cuenta de que esto era realmente lo que estaba buscando hasta que lo vi. Gracias por tener esta respuesta aquí. –

Cuestiones relacionadas