[英]intersection of a ruby array and the keys of a hash
是否有可能获得数组和散列键的交集?
我知道&
运算符返回两个数组的交集,但我想使用这些值而不是value + key
组合。
比方说,我有一个数组和一个哈希:
a1 = [ 'test1', 'test2', 'test3' ]
a2 = { 'test3' => 'value3', 'test4'=>'value4', 'test5'=>'value5' }
有没有办法从这些中返回value3
?
给予
arr = ['value1', 'value2', 'value3']
hsh = {:key1 => 'value3', :key2=>'value4', :key3=>'value5'}
您可以使用 .values 方法将 hsh 转换为值数组,并使用 & 运算符将哈希值与数组进行比较。
arr & hsh.values
=> ["value3"]
这可能是我能想到的最直观的方式来完成您的要求:
a1 = [ 'test1', 'test2', 'test3' ]
a2 = { 'test3' => 'value3', 'test4'=>'value4', 'test5'=>'value5' }
(a1 & a2.keys).map { |e| a2[e] }
#=> ["value3"]
那就是你想要a1
和来自a2
的键的交集。 然后,您可以使用 map 对在交集中找到的每个键执行查找以返回值。
a1.reduce(nil) {|r, k| r || a2[k]}
a1.reduce(nil) {|r, k| r || a2[k]}
应该按照你的要求做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.