如果存在散列键/值,是否有更有效的方法返回给定数组键的哈希值?

Eri*_*oss 1 ruby ruby-on-rails

我有一个接受哈希的方法,我有一个键数组(按优先级排序),我想检查哈希值,并返回找到的第一个匹配键的值blank?.到目前为止,我有以下几点,但由于我大量使用这种方法,我想知道是否有更有效的方法来实现它?

result = [:title, :name, :identifier, :slug].each do |key|
            if my_hash[key].present?
              return my_hash[key]
              break
            end
          end 
Run Code Online (Sandbox Code Playgroud)

所以给出以下哈希:

{
  id: 10,
  title: "",
  name: "Foo",
  slug: "foo"
}
Run Code Online (Sandbox Code Playgroud)

我希望result是:"Foo"

saw*_*awa 5

从效率的角度来看,你的方式可能接近最佳状态.但如果你想让它更优雅,保持效率,那么:

my_hash[%i[title name identifier slug].find{|key| my_hash[key].present?}]
Run Code Online (Sandbox Code Playgroud)