2016-02-29 58 views
0

我有保持与其中的值的一系列阵列的散列:如何检查数组中的某个值在散列中?

av_hash = {9 => [2,4,6], 10 => [5,7], 11 => [2,3,7]} 

我怎样才能检查一定数目的在一定的散列密钥的阵列值的存在?

因此,如果我想要例如找出键11是否包含数组2中的数字2,那么最好的方法是什么?

+2

获取数组中的关键和检查?我不确定这个问题实际上是什么。 –

回答

2

这是非常直接的。使用hash[key_name]获得给定密钥的项目,然后使用Enumerable#include?检查数组是否包含要查找的元素。

+0

谢谢,如果包括我无法解决?可以与哈希中的数组一起使用。我会接受,当我可以 –

+0

我做了,谢谢@CarySwoveland。 –

+2

这应该是'Array#include?' – Stefan

2

您可以测试你想要的特定键或遍历每个键/值对,并返回包含你正在寻找号码的键:

av_hash = {9 => [2,4,6], 10 => [5,7], 11 => [2,3,7]} 
search_for = 2 

# see if specific key has `search_for` value in it: 
av_hash[11].includes? search_for 
# returns true if key 11's array includes 2 

# get keys that contain the value: 
av_hash.map { |k, v| k if v.include? search_for }.compact 
# returns [9, 11] 
相关问题