2014-09-29 2 views
-2

У меня есть массив, который находится внутри хеша. Я хочу знать результат студента (pass/fail), используя следующий массив. Сначала я должен сопоставить их с конкретным стандартом и сравнить их метки с хэш-пасом и терпеть неудачу. И я хочу получить пропуск ключа или потерпеть неудачу, основываясь на их знаке. Как добиться этого с помощью 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

@Jaklin - Я не получаю, у вас есть и пропуск, и неудача для каждого ученика, так как вы хотите определить, кто проходит или кто сбой – Sontya

ответ

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

Большое вам спасибо. Я хочу проверить, прошел ли пользователь или отказался на основе всего предмета. –

+0

Я снова хочу зациклиться на: pass and: fail hash. После сравнения ученика все метки объекта, что два массива я должен найти, проходит ли пользователь или нет –

+0

, который уже сообщает, что если вы прошли, eng_pass и eng_fail являются логическими. –

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 
Смежные вопросы