From 182da6a047b411150ebf351766013fb85b6cbcd3 Mon Sep 17 00:00:00 2001 From: Matthew Grove Date: Sat, 27 Nov 2021 16:44:33 +0000 Subject: [PATCH] Make processAnswer more efficient Insert into array at random index instead of randomising whole array --- functions/index.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/functions/index.js b/functions/index.js index 3a87344..55349b3 100644 --- a/functions/index.js +++ b/functions/index.js @@ -634,11 +634,20 @@ exports.processAnswer = functions.https.onCall((data, context) => { returnData.progress = ++docData.progress; docData.incorrect.push(currentVocab); - docData.questions.push(currentVocab); - const doneQuestions = docData.questions.slice(0, docData.progress); - const notDoneQuestions = docData.questions.slice(docData.progress); docData.current_correct = []; - docData.questions = doneQuestions.concat(shuffleArray(notDoneQuestions)); + if (docData.questions.length > docData.progress) { + docData.questions.splice( + Math.floor( + Math.random() * ( + docData.questions.length - docData.progress + ) + ) + docData.progress + 1, + 0, + currentVocab + ); + } else { + docData.questions.push(currentVocab); + } returnData.totalQuestions = docData.questions.length; returnData.totalIncorrect = docData.incorrect.length;