Maison  >  Questions et réponses  >  le corps du texte

Utilisez l'instruction ifelse pour gérer les combinaisons de plusieurs variables

<p>J'ai deux variables comme suit :</p> <pre class="brush:php;toolbar:false;">var a = "active" //[Deux valeurs possibles actif/inactif] var b = "inactif" //[Trois valeurs possibles active/verrouillé/désactivé] var résultat = "" si(a=="actif" && b=="actif") résultat = « un » ; elif(a=="actif" && b=="verrouillé") résultat = "b" elif(a=="actif" && b=="désactivé") résultat = "c" elif(a=="inactif" && b=="actif") résultat = "d" elif(a=="inactif" && b=="désactivé") résultat = "e" elif(a=="inactif" && b=="verrouillé") résultat = "f"</pre> <p>En JS, outre l'utilisation de ifelse pour vérifier différentes conditions, quelle est la manière la plus efficace de décrire les résultats possibles ? Veuillez fournir des suggestions. </p>
P粉420958692P粉420958692452 Il y a quelques jours395

répondre à tous(1)je répondrai

  • P粉680087550

    P粉6800875502023-08-19 00:33:06

    Vous pouvez rendre votre logique davantage basée sur les données en utilisant des objets, par exemple :

    var outcomeMap = {
      active: {
        active: "a",
        locked: "b",
        disabled: "c"
      },
      inactive: {
        active: "d",
        locked: "e",
        disabled: "f",
      }
    };
    

    Vous pouvez alors utiliser a访问该对象,并访问嵌套对象的值来设置您的outcome variables, par exemple :

    var outcome = outcomeMap[a][b];
    

    Veuillez noter que si a除了您提到的值之外还可以是任何其他值,最好在访问b之前检查outcomeMap[a]是否为undefined。如果您的环境支持,可以使用可选链来完成,例如:outcomeMap[a]?.[b];

    Vous pouvez également configurer un tableau contenant des combinaisons possibles, puis les parcourir pour vérifier si votre combinaison correspond. Ensuite, en fonction de l'index actuel, si un résultat est trouvé, vous pouvez indexer votre résultat (outcomes), par exemple :

    function getOutcome(a, b) {
      const aVals = ['active', 'inactive'];
      const bVals = ['active', 'locked', 'disabled'];
      const outcomes = [['a', 'b', 'c'], ['d', 'e', 'f']];
    
      for(const [i, aVal] of aVals.entries()) {
        for(const [j, bVal] of bVals.entries()) {
          if (aVal == a && bVal == b) {
            return outcomes[i][j];
          }
        }
      }
      // return ''; if you want a default value of empty string
    }
    const outcome = getOutcome('inactive','locked');
    console.log(outcome);

    Veuillez noter qu'aucune des deux méthodes n'est plus efficace que l'utilisation d'une instruction if. Cependant, si vous avez plus de possibilités, elles devraient être plus faciles à mettre à l’échelle.

    répondre
    0
  • Annulerrépondre