测试散列是否具有多个键中的任何一个

时间:2011-01-20 05:21:45

标签: ruby hash

我想知道是否有更好的方法来测试哈希是否有来自数组的任何键。我想用它这样的东西:

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

或者我将不得不循环这个?

2 个答案:

答案 0 :(得分:65)

无需循环:

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

说明:

.keys将散列中的所有键作为数组返回。 &与两个数组相交,返回两个数组中存在的任何对象。最后,.any?检查数组是否有任何值。

答案 1 :(得分:6)

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