如何在ruby中按位置获取哈希值?

Dur*_*sad 6 ruby hash ruby-on-rails

我希望像数组一样按位置获取哈希值.

例: h = Hash["a" => 100, "b" => 200]

在这个数组中,当我们调用h [0]时,它返回给定数组中的第一个元素.

哈希可能有同样的事情吗?如果是,那怎么样?

先谢谢Prasad.

小智 10

如上所述,根据您的使用情况,您可以执行以下操作:

  h.keys[0]
  h.values[0]
  h.to_a[0]
Run Code Online (Sandbox Code Playgroud)

由于Ruby 1.9.1 Hash保留了插入顺序.如果你需要Ruby 1.8兼容性ActiveSupport::OrderedHash是一个不错的选择.


izo*_*ica 5

好吧,这个位置在哈希中没有很好地定义,因为根据定义它是一个无序集.如果你坚持能够做这样的事情,你仍然可以将哈希值转换为数组,然后继续你知道的方式:

irb(main):001:0> h = {:a => 1, :b => 2}
=> {:b=>2, :a=>1}
irb(main):002:0> h.to_a
=> [[:b, 2], [:a, 1]]
Run Code Online (Sandbox Code Playgroud)