首页 文章

如何检查哈希中是否存在特定密钥?

提问于
浏览
537

我想检查会话哈希中是否存在“用户”密钥 . 我怎样才能做到这一点?

请注意,我't want to check whether the key'的值是否为零 . 我只想检查"user"键是否存在 .

5 回答

  • 32

    Hashkey? 方法告诉您是否存在给定的密钥 .

    session.key?("user")
    
  • 26

    Hash#has_key? 完成工作时,正如Matz注意到here,它已被弃用,而不是 Hash#key? .

    hash.key?(some_key)
    
  • 803

    在最新的Ruby版本中,Hash实例有一个key?方法:

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

    请务必使用符号键或字符串键,具体取决于哈希中的内容:

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

    这是很晚但最好使用符号作为关键:

    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
    

    但是当你将字符串作为键传递时创建哈希,那么它将在键中搜索字符串 .

    但是在创建哈希时,你将符号作为键传递给has_key?将使用符号搜索键 .


    如果您使用的是Rails,则可以使用 Hash#with_indifferent_access 来避免这种情况; hash[:my_key]hash["my_key"] 都将指向同一记录

  • 261

    您始终可以使用 Hash#key? 来检查密钥是否存在于哈希中 .

    如果不是它会返回你 false

    hash =  { one: 1, two:2 }
    
    hash.key?(:one)
    #=> true
    
    hash.key?(:four)
    #=> false
    

相关问题