Ruby:按值查找散列中的项目

时间:2010-12-07 18:03:33

标签: ruby

我目前正在使用类似于以下内容的ruby哈希:

{"employee"=>[{"name"=>"john", "level"=>"1", "position"=>"S1"}, 
              {"name"=>"bill", "level"=>"2", "position"=>"S2"}]}

这是员工的两个例子,我需要能够通过价值观来拉动员工。例如,我想让所有级别== 2的员工,或者所有员工的职位== S1。

我如何在Ruby中执行此操作?

2 个答案:

答案 0 :(得分:25)

使用Hash#selectArray#select

level_2_employees = infoHash["employee"].select {|k| k["level"] == "2"}

这将根据您的条件返回一系列员工信息哈希值。请务必在级别

的值附近加上引号

答案 1 :(得分:5)

ehash = {"employee"=>[{"name"=>"john", "level"=>"1", "position"=>"S1"}, 
                      {"name"=>"bill", "level"=>"2", "position"=>"S2"}]}
ehash['employee'].find_all { |e| e['level'] == 2}
ehash['employee'].find_all { |e| e['position'] == 'S2'}