Ruby obtém chaves de objeto como array

97

Sou novo em Ruby, se tenho um objeto como este

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

Como posso retornar um array apenas com as chaves?

["apple", "carrot"]
JD Isaacks
fonte
Seu objeto é um Hash, então você pode usar o keysmétodo como {"apple" => "fruit", "carrot" => "vegetable"}.keys. Para obter mais informações, visite ruby-doc.org/core-1.9.3
taro

Respostas:

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

é simples assim

weezor
fonte
16

Uma forma alternativa se você precisar de algo mais (além de usar o keysmétodo):

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

obviamente, você só faria isso se quiser manipular o array enquanto o recupera.

Tigraine
fonte
4

Como disse o taro, keysretorna a matriz de chaves do seu Hash:

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

Você encontrará todos os diferentes métodos disponíveis para cada classe.

Se você não sabe com o que está lidando:

 puts my_unknown_variable.class.to_s

Isso produzirá o nome da classe.

ilíptico
fonte
2

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

ridecar2
fonte