2011-01-20 12 views
15

ハッシュに配列のキーがあるかどうかをテストする方法があるのか​​どうか疑問に思っていました。私は次のようなものを使いたい:ハッシュに多数のキーがあるかどうかのテスト

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

これをループする必要がありますか?

+0

私はこの質問に「rails」タグが付いている理由はわかりません。 – Nakilon

+8

私はあなたが楽しい警察になる必要がある理由はわかりません。 –

+0

どういう意味ですか? – Nakilon

答えて

52

ループする必要はありません:

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

説明:配列として

.keys戻るハッシュ内のすべてのキーを。 &は2つの配列を交差させ、両方の配列に存在するオブジェクトを返します。最後に、.any?は、配列の交差に値があるかどうかを調べます。

+0

+1謎解き! :-) –

+2

まあ...自分自身をルーピングすることはありませんが、テストのためにあまりにも多くのことをする必要があります。それはまだエレガントな答えですが、必ずしも絶対的な性能を発揮するとは限りません。 – Phrogz

+0

Bam!ありがとう、相棒 –

6
keys.any? { |i| hash.has_key? i } 
関連する問題