ruby - 将两个哈希键的值组合到一个哈希数组中
问题描述
我有一个哈希数组:
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"
有没有办法在一个班轮中做到这一点?
解决方案
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"]
。
推荐阅读
- react-native - react-native(expo)中的AuthSession不会返回应用程序Android
- spring - 来自另一个属性的 spring application.yml 参考列表
- c# - PostgreSQL 是否根据使用显式 PK 声明插入的 UPDATE 记录推送自动增量 ID?
- ios - iOS 12 中导航栏的 MFMailComposeViewController 标题颜色未更改
- intellij-idea - 在 IntelliJ 中导入 CSVParser 时出现问题
- tensorflow - 将张量流模型部署到世界
- mysql - SQLyog 触发器
- java - CriteriaBuilder:在运行时根据 DataType 创建 Criteria
- python - 如何为类实例变量赋值?
- regex - 正则表达式:“AND OR”返回两组,“ANDOR”不返回组