如何比较Ruby数组和哈希的内容?

Mat*_*iby 1 ruby arrays hash ruby-on-rails-3

我有一个Ruby数组,其内容如下:

my_array
=> ["MPA5534285", "MPA5534555", "MPA553asdf5", "MPA553asdasdfasdfaf5"]
Run Code Online (Sandbox Code Playgroud)

我有一个像这样的Ruby哈希:

1.9.2p290 :012 > hash
 => {"MPA5534555"=>"something", "MPA553sf"=>"something", "MPA55345asdf5adfads"=>"something", "MPA553asdasdfasdfaf5"=>"something"} 
Run Code Online (Sandbox Code Playgroud)

我需要将数组与散列进行比较,找到没有相应匹配的位置.

例如,在我的数组中,我有"MPA5534555",如果我查看哈希,密钥确实存在.但是,在数组"MPA5534285"中没有哈希键.

我想要一个只有散列中没有键的数组.

evf*_*qcg 6

a = ["MPA5534285", "MPA5534555", "MPA553asdf5", "MPA553asdasdfasdfaf5"]

h = {"MPA5534555"=>"something", "MPA553sf"=>"something", "MPA55345asdf5adfads"=>"something", "MPA553asdasdfasdfaf5"=>"something"} 


a - h.keys
# => ["MPA5534285", "MPA553asdf5"] 
Run Code Online (Sandbox Code Playgroud)


Vic*_*roz 5

这个变体比a - h.keys它快一点(它在场景后面无论如何减去数组时都做得很快,只有在这种情况下,重新划分h.keys不是必要的):

a.reject{ |e| h.has_key?(e) }
Run Code Online (Sandbox Code Playgroud)