2014-07-23 26 views
2

我有一個集合: [A,B,C] ,我想驗證一個哈希包含此集合如何將Has_key與集合一起使用?

我嘗試的一些關鍵:

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

my_hash.has_key? col 
=> false 

,但不起作用。 任何人都可以幫助我嗎?

謝謝。

回答

4

遍歷col和檢查每個。

無需解釋。

2.使用現有的庫功能做同樣的:

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

集數學:

h.keys & keys 
=> [:c] 

然後包起來真/假,這取決於返回你想要閱讀的方式。

+0

完美工作! 3個答案爲我工作!感謝所有人! –

+0

@ArnaldoJr真的嗎? ;) –

+0

是!這3種方法完美運作! –

1

但你可以這麼做:

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

讀它喜歡 - my_hash任意鍵包含在col陣列

3

試試這個:

my_hash.keys & col 
# => [c] 

&相交與col數組鍵的列表,在其中col出現在my_hash鍵返回唯一項目。

另一種選擇 - values_at

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

在'#values_at'中使用'#empty?'調用.. –

相關問題