如何检查散列中是否存在特定键?

无人久伴 提交于 2020-01-07 01:01:34

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

请注意,我不想检查密钥的值是否为零。 我只想检查“用户” 是否存在。


#1楼

虽然Hash#has_key? 完成工作,正如Matz 在这里指出的那样,它已被弃用以支持Hash#key?

hash.key?(some_key)

#2楼

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

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"]都指向同hash["my_key"]记录


#3楼

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

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

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

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

#4楼

你总是可以使用Hash#key? 检查密钥是否存在于散列中。

如果不是,它会让你false

hash =  { one: 1, two:2 }

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

hash.key?(:four)
#=> false

#5楼

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

session.key?("user")
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!