轻松找到具有特定值的所有哈希值

时间:2012-11-07 11:12:10

标签: ruby arrays hash

我有以下哈希数组

h = [{:foo=>:bar}, {:qqq=>:ppp}, {:xxx=>123}]

我想查找值Symbol的所有哈希值。

目前我使用这种方法,但我实际上并不喜欢它,因为我必须为每个哈希创建数组并提取第一个元素(hash.values[0])。

h.select { |hash| hash.values[0].is_a?(Symbol) }
# => [{:foo=>:bar}, {:qqq=>:ppp}]

也许有更优雅的东西可以做到这一点?

1 个答案:

答案 0 :(得分:2)

如果您不想使用数组,请使用哈希)

h = { :foo=>:bar, :qqq=>:ppp, :xxx=>123 }
h.select { |k, v| v.is_a?(Symbol) }
=> { :foo=>:bar, :qqq=>:ppp }