【问题标题】:Easy way to find all hashes with particular values查找具有特定值的所有哈希的简单方法
【发布时间】:2012-11-07 19:33:40
【问题描述】:

我有以下哈希数组

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

我想找到值中 Symbol 的所有哈希值。

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

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

也许有更优雅的方法可以做到这一点?

【问题讨论】:

  • 感觉很奇怪,你只依赖于具有单个键/值对的哈希。为什么不创建一个专用对象?
  • 你想要什么输出?
  • 我同意apneadiving。它并没有真正利用 Hash 可以做什么,它们也可能是二元素数组。如果您能够按照@Konstantin 建议的方式更改输入,那将更有意义。
  • 感谢您的建议。我知道我试图解决错误的问题。

标签: ruby arrays hash


【解决方案1】:

如果不想用数组,就用hash)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2016-05-29
    相关资源
    最近更新 更多