Проблемы оператора Javascript - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь создать колесо цвета, которое работает, выбирая сначала 2 цвета и, наконец, выводя правильный цвет при объединении этих двух исходных цветов. У меня в основном все работает, но я не могу заставить операторов работать соответствующим образом, либо я делаю что-то не так, и, может быть, кто-то может направить меня в правильном направлении?

Я пробовал читать об операторах, но безрезультатно. Может ли кто-нибудь помочь или хотя бы указать мне правильное направление?

это функция, с которой у меня возникли проблемы ...

function resultColorFunction()  {
    if (colorSquareOne === blue || red && colorSquareTwo === red || blue)    
        {resultColor = purple;}
          
    else if (colorSquareOne == blue || yellow & colorSquareTwo == yellow || blue)       
        {resultColor = green;}

   else if (colorSquareOne == yellow || red & colorSquareTwo == red || yellow)    
        {resultColor = orange;}

    show();
}

1 Ответ

1 голос
/ 06 мая 2020

Твоя первая ошибка в том, что ты думаешь как человек. Вы думаете, что «когда пример синий или красный», поэтому вы пишете:

if ( example === 'blue' || 'red'){}

Вы должны проверить два раза:

if ( example === 'blue' || example === 'red'){}

Вторая ошибка - использование ИЛИ (||) и И (and). Даже если ваш текущий код пропустит первую ошибку, теперь у вас есть следующее:

if ((one === 'blue' || one === 'red') && (two === 'red' || two === 'blue'))    

Это было бы неоднозначно. Если оба красные или оба синие, это также будет совпадать. У вас переключены И и ИЛИ, это должно быть:

if (one === 'blue' && two === 'red') || (one === 'red' && two === 'blue')

Вы также часто повторяете себя, этот код не поддерживается, если у вас намного больше цветов. Я предлагаю вам создать небольшую функцию для проверки, а затем использовать ее:

function isCombination(one, two, color1, color2){
    return  (one === color1 && two === color2) || (one === color2 && two === color1);
}


function resultColorFunction()  {
    if (isCombination(colorSquareOne, colorSquareTwo, 'blue', 'red') {
        resultColor = purple;
    }
    else if (isCombination(colorSquareOne, colorSquareTwo, 'blue', 'yellow') {
        resultColor = green;
    }   
    else if (isCombination(colorSquareOne, colorSquareTwo, 'red', 'yellow') {
        resultColor = orange;
    }

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