Utilisez l'instruction ifelse pour gérer les combinaisons de plusieurs variables
P粉420958692
P粉420958692 2023-08-18 14:08:36
0
1
367
<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粉420958692
P粉420958692

répondre à tous(1)
P粉680087550

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!