Heim  >  Fragen und Antworten  >  Hauptteil

Verwenden Sie die ifelse-Anweisung, um Kombinationen mehrerer Variablen zu verarbeiten

<p>Ich habe zwei Variablen wie folgt: </p> <pre class="brush:php;toolbar:false;">var a = "active" //[Zwei mögliche Werte aktiv/inaktiv] var b = „inaktiv“ //[Drei mögliche Werte aktiv/gesperrt/deaktiviert] var result = "" if(a=="aktiv" && b=="aktiv") Ergebnis = „a“; elif(a=="aktiv" && b=="gesperrt") Ergebnis = „b“ elif(a=="aktiv" && b=="deaktiviert") Ergebnis = „c“ elif(a=="inaktiv" && b=="aktiv") Ergebnis = „d“ elif(a=="inaktiv" && b=="deaktiviert") Ergebnis = „e“ elif(a=="inaktiv" && b=="gesperrt") Ergebnis = "f"</pre> <p>Was ist in JS neben der Verwendung von ifelse zur Überprüfung verschiedener Bedingungen die effizienteste Möglichkeit, mögliche Ergebnisse zu beschreiben? Bitte um Vorschläge. </p>
P粉420958692P粉420958692452 Tage vor396

Antworte allen(1)Ich werde antworten

  • P粉680087550

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

    您可以通过使用对象使您的逻辑更加数据驱动,例如:

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

    然后,您可以通过使用a访问该对象,并访问嵌套对象的值来设置您的outcome变量,例如:

    var outcome = outcomeMap[a][b];
    

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

    或者,您可以设置包含可能组合的数组,然后循环遍历它们以检查您的组合是否匹配。然后,根据当前索引,如果找到结果,您可以索引到您的结果(outcomes),例如:

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

    请注意,这两种方法都不比使用if语句更高效。但是,如果您有更多可能性,它们应该更容易扩展。

    Antwort
    0
  • StornierenAntwort