确定散列数组中是否存在值

时间:2009-10-03 21:15:25

标签: ruby arrays

我有以下内容:

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 个答案:

答案 0 :(得分:86)

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

答案 1 :(得分:17)

你确实在OQ中要求一个布尔结果,但是如果你真的想要哈希元素本身呢:

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

如果您希望结果非常快,您可以对原始对象进行分组,然后通过单个哈希查找获得结果:

t = array_of_hashes.group_by { |x| x[:a] }
t[11]