@hollanditkzn

Как сделать рефакторинг кода?

Я делаю тест и и все хранится в д mysql.
В базе хранятся таблица темы, вопросов и ответы
Я получил массивы вопросы по определенной теме, массив ответов и массив правильных ответов.
const Test = require('./model/test');
router.get('/testing/:id', async ctx => {
        let answearArr = []; //Массив ответов на вопросы
        let answerCorrectArr = []; // массив правильных ответов
        let test = await Test.test(ctx.params.id); // получаем все вопросы по данной теме
        for(i=0; i < test.length; i++){
            let answear = test[i].id;
            answearArr.push(await Test.answear(answear)); //перевожу все в массив по выборке
        }
        for(i=0; i < answearArr.length; i++){
            let arr = answearArr[i]; //Получаю все ответы на один вопрос
            for(n=0; n < arr.length; n++){
                let arr1 = arr[n]; //Получаю один ответ и дальше делаю проверку на правильность ответа
                if(arr1.answer === 1){
                    answerCorrectArr.push(arr1.id); //если правильный ответ, то помечаем в массив
                }
            }
        }
    })

Как сделать рефакторинг
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
@kulaeff
Front-end developer
Такое за бесплатно вам вряд ли кто-то сделает, но пару советов могу дать. Коль вы используете for совместно с array.push, то лучше заменить это все на map(). Типа:

let
    test = await Test.test(ctx.params.id), // получаем все вопросы по данной теме
    answerArr = test.map(item => await Test.answear(item.id));


А еще используйте eslint.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы