我有一个系列: [a,b,c] 我想验证散列是否包含此集合的某些键
我试试:
col = [a, b, c]
my_hash = {c => 1, f => 2, h => 3}
my_hash.has_key? col
=> false
但不行。 有人能帮助我吗?
感谢。
答案 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
数组的键列相交,仅返回col
中my_hash
中显示为键的项。
另一种选择 - values_at
:
my_hash.values_at(*col).compact
# => [1]
答案 2 :(得分:1)
但你可以这样做:
my_hash.any? { |key,_| col.include?(key) }
阅读它 - 来自my_hash
数组中包含的col
的所有密钥。