操作员问题 Javascript

Operator problems Javascript

我正在尝试制作一个色轮,它首先选择 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();
}

你的第一个错误是因为你像人一样思考。你认为 'when example is blue or red' 所以你写:

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

您必须检查两次:

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

您的第二个错误是使用 OR (||) 和 AND (and)。即使您当前的代码会通过第一个错误,您现在也有这个:

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

那将是模棱两可的。如果两者都是红色或都是蓝色,这也会匹配。您切换了 AND 和 OR,应该是:

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();
}