以非常有效的方式从哈希中获取多个值

Rav*_*mar 10 ruby hash

我的代码是

a={"1"=>"adi","2"=>"amar","3"=>"rave","4"=>"sum"}
arr=["1","5","3"]
Run Code Online (Sandbox Code Playgroud)

如果哈希中存在数组值,我想提取所有这样的值

result =["adi","rave"]
Run Code Online (Sandbox Code Playgroud)

没有使用任何循环.这是可能的

tor*_*o2k 31

你可以这样做:

a.values_at(*arr).compact
# => ["adi", "rave"] 
Run Code Online (Sandbox Code Playgroud)

  • 请注意,splat运算符(`*`)将数组展开到堆栈.因此,如果您的阵列很大,最终可能会出现堆栈溢出 (3认同)