Je dispose d'un tableau de dates
et un objet tests
, qui est soumis par l'utilisateur:trouver des correspondances dans les blocs imbriqués
dates = []
today = Date.today + 1
(today - 31..today).each{|date| dates.push(date.to_s)}
tests = company.tests.where(date: today - 31..today).order(date: :asc)
J'itérer sur chaque date
, et s'il y a un test
qui correspond à la Je l'ajoute à un tableau score
. Il peut y avoir plusieurs, d'où le calcul average
.
score = []
array = []
dates.each do |r|
tests.each do |t|
if t.date.strftime("%Y-%m-%d") == r
score.push(t.security_percentage)
end
end
average = score.reduce(:+).to_i/score.size
array.push(average)
end
Je suis coincé à essayer de comprendre comment insérer un 0
s'il n'y a pas de tests pour la date donnée. Je me attends array
avoir 31 entrées:
[0, 98, 89, 99, 0, 0, ...]
mais il a seulement 20 entrées depuis que je n'ai que 20 tests.
C'est en fait tout à fait semblable à ce que j'avais à l'origine. Le problème est que je ne peux pas remplir l'espace restant avec des zéros. Je n'ai besoin de les pousser que s'il n'y a pas de test pour la date en cours d'itération. – Godzilla74
@ Godzilla74 a mis à jour le post –
Donc, pousser un '0' 30+ fois dans le tableau' score' puisque les autres dates de test ne correspondent pas? – Godzilla74