【发布时间】:2009-10-03 21:15:24
【问题描述】:
我有以下几点:
array_of_hashes = [{:a=>10, :b=>20}, {:a=>11, :b=>21}, {:a=>13, :b=>23}]
我将如何查找:a=>11 是否存在于array_of_hashes 中
array_of_hashes.include? 似乎不起作用
【问题讨论】:
我有以下几点:
array_of_hashes = [{:a=>10, :b=>20}, {:a=>11, :b=>21}, {:a=>13, :b=>23}]
我将如何查找:a=>11 是否存在于array_of_hashes 中
array_of_hashes.include? 似乎不起作用
【问题讨论】:
array_of_hashes.any? {|h| h[:a] == 11}
【讨论】:
您确实在 OQ 中要求了布尔结果,但如果您真的想要哈希元素本身,请这样做:
array_of_hashes.detect { |h| h[:a] == 11 }
如果您希望结果非常快,您可以对原始对象进行分组,然后通过单个哈希查找获得结果:
t = array_of_hashes.group_by { |x| x[:a] }
t[11]
【讨论】: