Определить, существует ли значение в массиве хэшей - PullRequest
43 голосов
/ 04 октября 2009

У меня есть следующее:

array_of_hashes = [{:a=>10, :b=>20}, {:a=>11, :b=>21}, {:a=>13, :b=>23}]

Как мне найти, если :a=>11 существует в array_of_hashes

array_of_hashes.include? не работает

Ответы [ 2 ]

88 голосов
/ 04 октября 2009
array_of_hashes.any? {|h| h[:a] == 11}
18 голосов
/ 04 октября 2009

Вы запрашивали логический результат в OQ, но если вы действительно хотите, чтобы сам элемент хеша сделал:

array_of_hashes.detect {  |h| h[:a] == 11 }

Если вы хотите получить результат очень быстро, вы можете сгруппировать исходный объект, а затем получить результат с помощью одного поиска:

t = array_of_hashes.group_by { |x| x[:a] }
t[11]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...