2014-09-29 199 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