如何从数组中的嵌套哈希中获取键值?

时间:2014-09-29 06:08:56

标签: ruby-on-rails arrays hash

我有一个在哈希里面的数组。我希望使用以下数组知道学生的结果(通过/失败)。首先,我必须将它们与特定标准匹配,并将它们的标记与散列传递进行比较并失败。我希望根据他们的标记获得密钥传递或失败。如何使用Ruby实现这一目标?

array = [
  {
     :standard =>1
     :pass=>{:tamil=>30,:eng=>25,:math=>35},
     :fail=>{:tamil=>10,:eng=>15,:maths=>20}
  },
  {
    :standard =>2,
    :pass=>{:tamil=>40,:eng=>35,:math=>45},
    :fail=>{:tamil=>20,:eng=>25,:maths=>30}
  }
]

2 个答案:

答案 0 :(得分:0)

假定@student被定义

standard = array.select {|standard| standard[:standard] == @student.standard}
eng_pass = @student.eng_mark  >= standard[:pass][:eng]
eng_fail = @student.eng_mark  <= standard[:fail][:eng]

return [eng_pass, eng_fail, whatever_else_you_want]

各种主题的来回。

答案 1 :(得分:0)

从这个结构中读取值的语法类似于:

array[0][:pass][:eng]

因此您可以像往常一样进行批量比较:

for i in 0..@students_array.length
   num = # student's score
   standard = # something like array[0][:pass][:eng]

   if num > standard
      # something like 'put "You passed!"'
   end
end