2011-12-28 12 views
75

Sono nuovo a Ruby, se ho un oggetto come questoRubino ottenere le chiavi oggetto come matrice

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

Come posso restituire un array di appena le chiavi?

["apple", "carrot"] 
+0

vostro alloggio è un hash, quindi puoi usare il metodo 'keys' come' {"apple" => "fruit", "carrot" => "vegetable"}. keys'. Per maggiori informazioni visita http://ruby-doc.org/core-1.9.3/ – taro

risposta

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

è così semplice

+1

+1 grazie, (non puoi accettare la tua risposta fino al limite di tempo) –

1

utilizzare il metodo keys: {"apple" => "fruit", "carrot" => "vegetable"}.keys == ["apple", "carrot"]

4

Come taro detto, keys restituisce la serie di chiavi del vostro Hash:

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

Troverete a I diversi metodi disponibili per ogni classe.

Se non sai cosa hai a che fare con:

uscita
puts my_unknown_variable.class.to_s 

Questa volontà il nome della classe.

+0

+1 informazioni molto utili. Grazie. –

+0

+1 per il collegamento ai documenti di hash. I neofiti di Ruby dovrebbero familiarizzarsi con i metodi su Hash, String, Array ed Enumerable. –

12

Un modo alternativo, se avete bisogno di qualcosa di più (oltre ad utilizzare il metodo keys):

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

, ovviamente, si sarebbe farlo solo se si desidera modificare la matrice durante il recupero di esso ..

+0

Non sapevo che questo era davvero quello che stavo cercando finché non l'ho visto. Grazie per avere questa risposta qui. –

Problemi correlati