首页 > 解决方案 > 将两个哈希键的值组合到一个哈希数组中

问题描述

我有一个哈希数组:

a = [{"ID"=>"FOO", "Type"=>"Name"}, {"ID"=>"1234", "Type"=>"CID"}]

我正在尝试提取 的哈希值Type=='CID',然后将这两个值组合起来以产生CID=1234.

我可以通过多个步骤来做到这一点:

h = a.find{|x| x['Type']=='CID'}
# => {"ID"=>"1234", "Type"=>"CID"}

"#{h['Type']}=#{h['ID']}"
# => "CID=1234"

有没有办法在一个班轮中做到这一点?

标签: ruby

解决方案


a.find { |h| h["Type"] == "CID" }&.values_at("Type", "ID")&.join("=")
  #=>"CID=1234"

a.find { |h| h["Type"] == "cat" }&.values_at("Type", "ID")&.join("=")
  #=> nil

&是 Ruby 的安全导航运算符,在 Ruby v2.3 中首次亮相。nil如果没有匹配项,我添加它以导致返回h["Type"]


推荐阅读