Подтвердить что ты не робот

Тестирование, если хэш имеет любое из нескольких ключей

Мне было интересно, есть ли лучший способ проверить, имеет ли хэш какие-либо ключи из массива. Я хочу использовать его примерно так:

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

Или мне придется зацикливать это?

4b9b3361

Ответ 1

Нет необходимости в цикле:

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

Пояснение:

.keys возвращает все ключи в хеше как массив. & пересекает два массива, возвращая любые объекты, которые существуют в обоих массивах. Наконец, .any? проверяет, имеет ли массив пересечение любые значения.

Ответ 2

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