当且仅当Array2元素匹配哈希值(不是键)时,使用Array2 String元素填充ruby Array1

0 ruby arrays hash scope nested-loops

我有一个红宝石哈希:

VALS = { :one => "One", :two => "Two" }
Run Code Online (Sandbox Code Playgroud)

和一个数组:

array2 = ["hello", "world", "One"]
Run Code Online (Sandbox Code Playgroud)

问题:如何填充新的array1,以便它只引入array2中与VALS中的值完全匹配的任何值?

例如,我试过:

array2.each_with_index do |e,i| 
array1 << e if VALS[i] ~= e
end
Run Code Online (Sandbox Code Playgroud)

和其他东西一起,没有工作.菜鸟.

谢谢


辉煌!但是我尝试过:

p array.select { |i| hash.has_value? i ? array[i+1] : "foo"}
Run Code Online (Sandbox Code Playgroud)

我有一个无法转换fixnum错误.我肯定错过了什么.

Mar*_*ers 6

如果两个集合都很大,那么使用嵌套循环会非常慢.最好将内容视为集合:

array1 = VALS.values & array2
print array1
Run Code Online (Sandbox Code Playgroud)

输出:

One
Run Code Online (Sandbox Code Playgroud)