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

Jer*_* B. 9 ruby

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

{"employee"=>[{"name"=>"john", "level"=>"1", "position"=>"S1"}, 
              {"name"=>"bill", "level"=>"2", "position"=>"S2"}]}
Run Code Online (Sandbox Code Playgroud)

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

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

Pla*_*ure 26

使用Hash#selectArray#select.

level_2_employees = infoHash["employee"].select {|k| k["level"] == "2"}
Run Code Online (Sandbox Code Playgroud)

这将根据您的条件返回一系列员工信息哈希值.请务必在关键值附近加上引号


Vic*_*gin 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'}
Run Code Online (Sandbox Code Playgroud)