如何检索数组中的值

时间:2012-09-12 13:25:34

标签: ruby

  def self.foo
    [
      ["a","aa"],
      ["b","bb"],
    ]
  end

鉴于“a”,我应该能够检索“aa” 鉴于“bb”,我应该能够检索“b”

我该怎么做?

3 个答案:

答案 0 :(得分:2)

assocrassoc是您的朋友:

ar = [
  ["a","aa"],
  ["b","bb"],
]
p ar.assoc("a").last #=> "aa"
p ar.rassoc("bb").first #=> "b"

答案 1 :(得分:0)

Hash[self.foo].invert["bb"] #=> "b"
Hash[self.foo]["a"] #=> "aa"

Hash[]将数组转换为哈希

Hash#invert反转哈希值,以便所有值都映射到键

如果你想同时做到这两点:

Hash[self.foo]["bb"] or Hash[self.foo].invert["bb"] #=> "b"

答案 2 :(得分:0)

我会创建自己的“bimap”实现,可能是这样的:

class Bimap < Hash
  alias :__put__ :[]=
  def []=(key,value)
    __put__(key,value)
    __put__(value,key)
  end

  alias :__size__ :size
  def size
    __size__ / 2
  end

  # ...any other Hash methods to reimplement?
end