我的代码中有一个哈希集,声明了一个简单度:
eligibility_scale = [{family_size: 2, minimum_income: 20161, maximum_income: 38200},
{family_size: 3, minimum_income: 25393, maximum_income: 43000},
{family_size: 4, minimum_income: 30613, maximum_income: 47750},
{family_size: 5, minimum_income: 35845, maximum_income: 51600},
{family_size: 6, minimum_income: 41065, maximum_income: 55400},
{family_size: 7, minimum_income: 46297, maximum_income: 59250},
{family_size: 8, minimum_income: 51517, maximum_income: 63050}]
我正在尝试使用family_size
作为搜索参数来获取哈希结果。
income_bracket = eligibility_scale.select{|h| h["family_size"] == 4 }
# Expecting: {family_size: 4, minimum_income: 30613, maximum_income: 47750}
运行此代码后,我得到一个空数组。
有关我做错的任何建议吗?
答案 0 :(得分:2)
问题中的哈希键是符号,而不是字符串。
您需要将密钥指定为符号:
替换以下内容:
h["family_size"]
使用:
h[:family_size]
答案 1 :(得分:1)
首先使用select会返回一个数组,所以如果你的family_size是唯一的,你可以使用find
。否则,以相同的方式使用select
,但期望返回一个哈希数组。
其次,你的哈希是使用符号,而不是字符串。理想情况下,你正在考虑写这样的东西:
eligibility_scale.find { |i| i[:family_size] == 4 }
# => {family_size: 4, minimum_income: 30613, maximum_income: 47750}
这是假设您的家庭规模是独一无二的。
答案 2 :(得分:0)
您已使用key: value
语法定义了哈希值,这是:key => value
的简写 - 意思是键是符号而不是字符串
eligibility_scale.select {|h| h[:family_size] == 4 }