测试哈希表中是否存在多个键中的任意一个

25

我想知道是否有更好的方法来测试哈希表中是否有来自数组的任何键。 我想在以下情况下使用它:

keys = %w[k1 k2 k5 k6]
none = true if hash.key?(keys)

还是说我必须使用循环?


1
我不明白为什么这个问题需要加上 rails 标签。 - Nakilon
12
我不明白为什么你要当乐趣警察。 - Trevor Nowak
2个回答

83

不需要循环:

(hash.keys & keys).any? # => true

解释:

.keys返回哈希表中所有键名组成的数组。&交集运算符用来比较两个数组,返回同时存在于两个数组中的元素。最后,.any?方法检查由交集操作返回的数组是否有任何值。


4
嗯... 不要自我循环,但在幕后过度测试。这仍然是一个优雅的答案,但不一定是绝对性能最佳的。 - Phrogz

9
keys.any? { |i| hash.has_key? i }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接