761 Stimmen

Wie kann man überprüfen, ob ein bestimmter Schlüssel in einem Hash vorhanden ist oder nicht?

Ich möchte überprüfen, ob der Schlüssel "user" im Sitzungshash vorhanden ist oder nicht. Wie kann ich das tun?

Beachten Sie, dass ich nicht prüfen möchte, ob der Wert des Schlüssels gleich Null ist oder nicht. Ich möchte nur prüfen, ob der "Benutzer" key vorhanden ist.

1135voto

sepp2k Punkte 352762

Hash 's key? sagt Ihnen, ob ein bestimmter Schlüssel vorhanden ist oder nicht.

session.key?("user")

343voto

Bozhidar Batsov Punkte 54038

Während Hash#has_key? erledigt die Aufgabe, wie Matz bemerkt aquí wurde sie zugunsten von Hash#key? .

hash.key?(some_key)

56voto

installero Punkte 7606

Hash-Instanz hat eine key? Methode:

{a: 1}.key?(:a)
=> true

Achten Sie darauf, den Symbolschlüssel oder einen String-Schlüssel zu verwenden, je nachdem, was Sie in Ihrem Hash haben:

{'a' => 2}.key?(:a)
=> false

37voto

Abdul Baig Punkte 3633

Es ist sehr spät, aber vorzugsweise sollten Symbole als Schlüssel verwendet werden:

my_hash = {}
my_hash[:my_key] = 'value'

my_hash.has_key?("my_key")
 => false 
my_hash.has_key?("my_key".to_sym)
 => true 

my_hash2 = {}
my_hash2['my_key'] = 'value'

my_hash2.has_key?("my_key")
 => true 
my_hash2.has_key?("my_key".to_sym)
 => false 

Aber beim Erstellen von Hash, wenn Sie String als Schlüssel übergeben, dann wird es für die Zeichenfolge in Schlüssel suchen.

Aber beim Erstellen von Hash übergeben Sie Symbol als Schlüssel dann has_key? wird die Schlüssel mit Hilfe von Symbol suchen.


Wenn Sie Rails verwenden, können Sie Hash#with_indifferent_access um dies zu vermeiden; sowohl hash[:my_key] y hash["my_key"] verweist auf denselben Datensatz

9voto

Arvind singh Punkte 1172

Eine andere Möglichkeit ist hier

hash = {one: 1, two: 2}

hash.member?(:one)
#=> true

hash.member?(:five)
#=> false

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X