Создание массива, который назначает варианты ответов как true или false в setchoices для форм Google - PullRequest
1 голос
/ 15 января 2020

Я хотел бы получить совет по проблеме, с которой я столкнулся. Я хотел бы сделать самостоятельную викторину с несколькими вариантами ответов, настроенную в Google Sheet. Мне бы хотелось, чтобы у некоторых вопросов было более одного ответа, и поэтому мне нужно сделать массив вариантов, при котором каждому ответу присваивается значение true или false, в зависимости от того, появляется ли он в массиве ответов. Тем не менее, с кодом, который у меня есть на данный момент, ответы правильно отображаются как правильные в викторине формы Google, но все ответы повторяются 4 раза для каждого вопроса, что означает, что мои циклы for неверны, но я не могу, в течение жизни Я вижу, какую ошибку я совершил. Любая помощь будет отличной, спасибо!

//make Multiple-Choice question
function makeMultipleQ(data) { //data- a row of spreadsheet dataRange
 var question = data[2]
 var questionNumber = data[0]
 var answer = data[9]
 var item = form.addMultipleChoiceItem(); //form to add choice
 item.setTitle(questionNumber + '. ' + question)
 var trimmedData = data.filter(function(str) {
   return /\S/.test(str)
  })
  var slicedData = [1,2,3,4]
  var answers = [1,2,6,7,8,9]
  var choices = []; //array of choices
  for (var i = 0; i < slicedData.length; i++) {
    for (var k = 0; k < answers.length; k++){
      if (slicedData[i] == answers[k]) {
        choices.push(item.createChoice(answers[k],true))
          }
      else {
        choices.push(item.createChoice(slicedData[i],false)); //wrong answer pushed to choices
    }
    }
  }
  Logger.log(choices)
  item.setChoices(choices); //set the choices array to this itemQ
}

Это вывод в форме Google:

Google form output as the code stands

This is the Google sheet

1 Ответ

0 голосов
/ 15 января 2020

Выпуск:

  • Ненужное вложение циклов. Для каждого i во внешнем l oop внутренний l oop будет работать до завершения для каждого k.

Решение:

  • Использование indexOf для проверки внутреннего массива answers вместо повторения цикла

Фрагмент:

if (answers.indexOf(slicedData[i]) !== -1) {//k loop removed
    choices.push(item.createChoice(slicedData[i],true))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...