【问题标题】:Determine if a value exists in an array of hashes确定一个值是否存在于哈希数组中
【发布时间】: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? 似乎不起作用

【问题讨论】:

    标签: ruby arrays


    【解决方案1】:
    array_of_hashes.any? {|h| h[:a] == 11}
    

    【讨论】:

    • 漂亮而简单。谢谢!
    【解决方案2】:

    您确实在 OQ 中要求了布尔结果,但如果您真的想要哈希元素本身,请这样做:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多