检查哈希是否包含包含某些文本的键

Fáb*_*rez 5 ruby string hash

我想检查散列是否包含包含某些文本的键.它可能不是确切的密钥,但密钥必须包含(如.include?)文本.我的解决方案是:

some_hash.select {|k,v| k.include? "foo"}.empty?
Run Code Online (Sandbox Code Playgroud)

但这会产生一个哈希值.我只想检查密钥的存在.有没有更好的方法呢?

jtb*_*des 10

这会更好一些:

some_hash.any? {|k, v| k.include? "foo"}
Run Code Online (Sandbox Code Playgroud)

(对我来说,这是"哈希有没有包含'foo'的键吗?")

或者,这可能效率较低,但实际上效率更高(请参阅注释),并且可能更具可读性:

some_hash.keys.any? {|k| k.include? "foo"}
Run Code Online (Sandbox Code Playgroud)


Jör*_*tag 5

some_hash.keys.any? {|k| k.include? 'foo' }
Run Code Online (Sandbox Code Playgroud)