2012-01-26 9 views

risposta

42

Hash include Enumerable, quindi è possibile utilizzare i numerosi metodi su tale modulo per attraversare l'hash. Ha anche questo metodo pratico:

hash.has_value?(value_you_seek) 

per trovare la chiave associata a tale valore:

hash.key(value_you_seek) 

Questo API documentation for Ruby (1.9.2) dovrebbe essere utile.

+0

Questo non attraversare gli hash nidificati – nathanengineer

1

La classe Hash ha il metodo select che restituirà un nuovo hash di voci per cui il blocco è true;

h = { "a" => 100, "b" => 200, "c" => 300 } 
h.select {|k,v| v == 200} #=> {"b" => 200} 

In questo modo avrete una ricerca per valore, e ottenere la vostra chiave!

+0

Perché questo quando Hash ha costruito in metodi? – max

-2

Una versione ancora più breve che si potrebbe usare sarebbe hash.values

0

Mentre Hash#has_key? opere, ma, come ha scritto Matz here, è stato deprecato in favore di Hash#key?.

Hash Il metodo key? indica se una determinata chiave è presente o meno.

hash.key?(:some_key) 
0

Se lo fai hash.values, ora avete un array.

su array è possibile utilizzare il metodo di ricerca Enumerable include?

hash.values.include?(value_you_seek) 
Problemi correlati