从其键属于数组的哈希中选择键值对

har*_*s08 2 ruby arrays hash

我有一系列的钥匙:

keys = ["first_name", "last_name", "foo"]
Run Code Online (Sandbox Code Playgroud)

和哈希:

hsh = {"first_name" => "tester", "zoo" => "loo", "foo" => "bar"}
Run Code Online (Sandbox Code Playgroud)

我想提取其键存在于数组中的键值对,以获得:

res = {"first_name" => "tester", "foo" => "bar"}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Fre*_*ore 10

hsh.slice *keys
# => {"first_name" => "tester", "foo" => "bar"}
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案! (2认同)

Far*_*lko 5

尝试这个:

hsh.select{ |k, v| keys.include?(k) } 
Run Code Online (Sandbox Code Playgroud)