2014-09-29 157 views
-2

我有一个散列里面的数组。我想用下面的数组知道学生的结果(通过/失败)。首先,我必须将它们与特定标准进行匹配,并将它们的标记与散列通行证进行比较并失败。我想根据他们的标记获得关键通过或失败。如何使用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

那么产量将你期待吗? – 2014-09-29 06:11:48

+0

学生的成绩 - 通过或失败 – 2014-09-29 06:14:15

+0

@Jaklin - 我没有得到,你们每个学生都通过和失败,所以你要如何确定谁是通过或谁是失败 – Sontya 2014-09-29 06:26:35

回答

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] 

+0

非常感谢。我想根据所有主题检查用户是否通过或失败。 – 2014-09-29 06:55:47

+0

我又想循环进入:pass和:fail hash。比较学生所有学科的标记,我必须找到两个数组是否合格或不合格 – 2014-09-29 07:00:12

+0

已经告诉你是否通过,eng_pass和eng_fail是布​​尔值。 – 2014-09-29 09:35:08

0

在从这种结构读取值的语法是这样的:

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

,因此你可以做批量比较像往常一样:

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

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