如何将has_key与集合一起使用?

时间:2014-07-23 19:26:46

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个系列: [a,b,c] 我想验证散列是否包含此集合的某些键

我试试:

col = [a, b, c]
my_hash = {c => 1, f => 2, h => 3}

my_hash.has_key? col
=> false

但不行。 有人能帮助我吗?

感谢。

3 个答案:

答案 0 :(得分:4)

1。:重复col并检查每个。

无需解释。

2. 使用现有的库功能执行相同操作:

keys = [:a, :b, :c]
h = { c: 1, f: 2, h: 3 }
h.any? { |key, val| keys.include? key }
=> true

3. 设置数学:

h.keys & keys
=> [:c]

然后将其换行以返回true / false,具体取决于您希望阅读的内容。

答案 1 :(得分:3)

试试这个:

my_hash.keys & col
# => [c]

&col数组的键列相交,仅返回colmy_hash中显示为键的项。

另一种选择 - values_at

my_hash.values_at(*col).compact
# => [1]

答案 2 :(得分:1)

但你可以这样做:

my_hash.any? { |key,_| col.include?(key) }

阅读它 - 来自my_hash数组中包含的col的所有密钥。