Кодирование теста в JAVASCRIPT, который возвращает фильмы для просмотра на Netflix - PullRequest
1 голос
/ 13 февраля 2020

Я сейчас пытаюсь изучать предметы. Таким образом, у меня есть пять различных переменных, которые установлены в ноль и будут увеличиваться на 1 каждый раз, когда на них нажимают в викторине. (Я создаю тест, чтобы определить, какие движения ie или шоу вы должны смотреть на Neflix.)

var answer = {
    a: 0,
    b: 0,
    c: 0,
    d: 0,
    e: 0
};


function selection (choice) {
    answer[choice]++;
    console.log(answer);
    console.log(choice);
};

Однако моя проблема - вернуть объект с наибольшим количеством, и как только я это сделаю, Я возвращаю имя mov ie в зависимости от того, какой объект возвращается. Я пытался выполнить две функции ...

function game() {
    var biggest = 'a';
    for (var choice in answer)
        if(answer[choice] > answer[biggest]) {
            biggest = choice;
            console.log(biggest);
        }
    return biggest;
};

функция выше намного чище, чем нижняя, но не имеет заголовков mov ie.

function submitt() {
    const {a, b, c, d, e} = answer
    if (a===2) {return 'Hobbs and Shaw'}
    if(a===1 && b===1) {return 'Jumanji' }
    if(a===1 && c===1) {return 'The Invitation'}
    if(a===1 && d===1) {return 'Incredibles 2'}
    if(a===1 && e===1) {return 'Someone Great'}
    if(b===2) {return 'The Good Place'}
    if(b===1 && c===1) {return 'Black Mirror'}
    if(b===1 && d===1) {return 'Liv and Maddie'}
    if(b===1 && e==1) {return 'Jane the Virgin'}
};

Мой вопрос заключается в том, как я могу определить объект в своем операторе if, потому что я получаю сообщение об ошибке «не определено». Как мне определить объекты?

1 Ответ

0 голосов
/ 13 февраля 2020

Чтобы ответить на ближайший вопрос - вам не нужно for l oop в теле функции submitt(), потому что вам не нужно итерировать здесь, вам нужно go для различных комбинаций пар ключ-значение в карте answer, что делается в (по общему признанию громоздким) выражении if. Вы можете либо сбросить for l oop и ссылаться на элементы по их правильному полному имени, либо вы можете использовать деструктуризацию, чтобы назначить ответы локальным переменным и сэкономить некоторую печать.

С деструктурой Ваша функция будет выглядеть следующим образом:

function submitt() {
  const {a, b, c, d, e} = answers

  if (a === 2) { /* ... existing if logic goes here ... */ }
}

Однако большая проблема с этим кодом заключается в том, что mov ie selection logi c жестко закодирован. Лучшим подходом было бы как-то кодировать ответы таким образом, чтобы уникальная комбинация ответов давала уникальный «ключ» - тогда вы могли бы просто поместить все заголовки mov ie на карту и избавиться от огромного «если» "в целом. Трудно предложить лучший способ сделать это, хотя, не зная вопросов / ответов на викторину и логику c за ней

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...