繁体   English   中英

ruby 数组和散列键的交集

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM