对数组使用哈希选择

时间:2011-07-08 04:40:42

标签: ruby

我有一个哈希

h = {a=> 1, b=> 2, c=> 3}

和一个数组

a = [a, b]

是否可以使用

h.select {|k,v| k == array_here?}

从哈希中存在的数组中选择所有元素吗?

我找到了解决方案

h.select {|k,v| a.include?(k) }

4 个答案:

答案 0 :(得分:2)

你要倒退了。试试这个:

a.select {|e| h.has_key? e }

答案 1 :(得分:1)

你可以通过以下方式实现这一目标:

a.each do |arr_elem| 
  new_hash[arr_elem] = h[arr_elem] unless h[arr_elem].nil?
end

答案 2 :(得分:1)

如果你真的想要你所要求的(即数组中作为哈希键出现的元素):

h = {:a => 1, :b => 2, :c => 3}
a = [:a, :b, :d]
a & h.keys

答案 3 :(得分:0)

一个可能且最简单的答案是:

h.select {|k,v| a.include?(k) }