如何在哈希中检查数组中的某个值?

时间:2016-02-29 15:27:13

标签: arrays ruby hash

我有一个哈希,它包含一系列包含值的数组:

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

如何检查某个哈希键的数组值中是否存在某个数字?

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

2 个答案:

答案 0 :(得分:2)

这非常直截了当。使用hash[key_name]获取具有给定键的项目,然后使用Enumerable#include?检查数组是否包含您要查找的元素。

答案 1 :(得分: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]