Freecodecamp: Fehler in der Herausforderung: Verwenden Sie mehrere bedingte (ternäre) Operatoren.

Erstellt am 22. Mai 2020  ·  16Kommentare  ·  Quelle: freeCodeCamp/freeCodeCamp


Beschreiben Sie Ihr Problem und wie Sie es reproduzieren können:
Fehler - Der Test auf den folgenden Code schlägt mit dem Fehler fehl: checkSign sollte mehrere bedingte Operatoren verwenden.

function checkSign(num) {
  return (num!==0) ?(num>0) ? "positive" 
    : "negative" 
    : "zero";
}


console.log(checkSign(10));
console.log(checkSign(-10));
console.log(checkSign(0));

Screenshot -1:
image

Screenshot - 2:
image

Wie man es reproduziert.
Anstelle von Fehler: "checkSign sollte mehrere bedingte Operatoren verwenden."
Der Fehler sollte sein: Die Verwendung mehrerer ternärer Operatoren im Statement-if-true-Teil des ternären Operators ist keine bewährte Methode.

(Erhöhung der Klarheit der Fehlermeldung)

Fügen Sie der Seite mit dem Problem einen Link hinzu:
Link zur Herausforderung ;
Link zu meinem Beitragsbericht im Forum:

first timers only help wanted learn

Hilfreichster Kommentar

"Es wird empfohlen, die mehreren bedingten Operatoren so zu formatieren, dass sich jede Bedingung aus Gründen der Lesbarkeit in einer separaten Zeile befindet, wie im Beispiel gezeigt."

Ich würde dafür sein, eine ähnliche Notiz hinzuzufügen.

Alle 16 Kommentare

Ich bin damit einverstanden, dass einige Optimierungen sinnvoll sind. Ich würde helfen, wenn wir die Tatsache erfassen können, dass der Test fehlschlägt, wenn a) Sie kein Mehrfach-Ternär verwenden oder b) das Ternär nicht das erwartete Format hat.

Ich denke nicht, dass dies die Herausforderung ist: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

Dies ist der Code aus den Dokumenten:

function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

Was Sie konstruiert haben, ist:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Ich stimme zu, Sie haben die Aufgabe erfüllt. Die erwartete implementierte Logik hat jedoch die Form:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Vielleicht sollten wir die Anweisungen für die Herausforderung ändern, um das Format genauer zu bestimmen ...

Ich denke nicht, dass dies die Herausforderung ist: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

Dies ist der Code aus den Dokumenten:

function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

Was Sie konstruiert haben, ist:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Ich stimme zu, Sie haben die Aufgabe erfüllt. Die erwartete implementierte Logik hat jedoch die Form:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Vielleicht sollten wir die Anweisungen für die Herausforderung ändern, um das Format genauer zu bestimmen ...

Sir, bitte beachten Sie: Dieses Repository ist von Free Code Camp . Danke für Ihre Antwort.

@ FelixBoscoJ , haha. Ja, ich bin mir bewusst. Ich habe auf die Mozilla-Dokumentation verlinkt, um ein Beispiel für mehrere bedingte ternäre Operatoren abzurufen.

Mein Punkt ist immer noch völlig gültig.

@ FelixBoscoJ , haha. Ja, ich bin mir bewusst. Ich habe auf die Mozilla-Dokumentation verlinkt, um ein Beispiel für mehrere bedingte ternäre Operatoren abzurufen.

Mein Punkt ist immer noch völlig gültig.

`` `js
Funktion checkSign (num) {
return (num! == 0)? (num> 0)? "positiv"
: "negativ"
: "Null";
}}

console.log (checkSign (10));
console.log (checkSign (-10));
console.log (checkSign (0));

`` ``
Bitte versuchen Sie den obigen Code in dieser Herausforderung . Bitte überprüfen Sie, was erforderlich ist, um die Herausforderung zu bestehen.

@FelixBoscoJ , ich habe, und ich verstehe genau, warum dieses Problem erstellt wurde. Ich weise darauf hin, dass das Format Ihrer Lösung nicht den Erwartungen entspricht, was im Beispiel in der Lektion deutlich wird:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Ich stimme zu, Sie haben die Aufgabe erfüllt. Die erwartete implementierte Logik hat jedoch die Form:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Ihre Lösung enthält keine else if Logik.

@FelixBoscoJ , ich habe, und ich verstehe genau, warum dieses Problem erstellt wurde. Ich weise darauf hin, dass das Format Ihrer Lösung nicht den Erwartungen entspricht, was im Beispiel in der Lektion deutlich wird:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Ich stimme zu, Sie haben die Aufgabe erfüllt. Die erwartete implementierte Logik hat jedoch die Form:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Ihre Lösung enthält keine else if Logik.

Sir, die Bedingung, um die Herausforderung zu gewinnen, ist:

Verwenden Sie mehrere bedingte Operatoren in der Funktion checkSign, um zu überprüfen, ob eine Zahl positiv, negativ oder null ist.

Wir sollten mehrere bedingte ( ternäre ) Operatoren verwenden.

Möglicherweise sollte die Fehlermeldung "... mehrere bedingte Operatoren im empfohlenen Format" lauten.

Und vielleicht fügen Sie einen Hinweis hinzu: "Es ist eine bewährte Methode, die mehreren bedingten Operatoren so zu formatieren, dass sich jede Bedingung zur besseren Lesbarkeit in einer separaten Zeile befindet, wie im Beispiel gezeigt."

"Es wird empfohlen, die mehreren bedingten Operatoren so zu formatieren, dass sich jede Bedingung aus Gründen der Lesbarkeit in einer separaten Zeile befindet, wie im Beispiel gezeigt."

Ich würde dafür sein, eine ähnliche Notiz hinzuzufügen.

Geschlossen? Wurde ein Update der Beschreibung zusammengeführt?

@ Sky020 Es ist nicht möglich, if / else if / else-Logik mit dem ternären Operator zu implementieren. Aber die Aufgabe kann erfüllt werden.

Ich stimme zu, Sie haben die Aufgabe erfüllt. Die erwartete implementierte Logik hat jedoch die Form:

 function findGreaterOrEqual(a, b) {
   if (a === b) {
     return "a and b are equal";
   }
   else if (a > b) {
     return "a is greater";
   }
   else {
     return "b is greater";
   }
 }

Nein, die erwartete implementierte Logik hat die Form:
`` `js
Funktion findGreaterOrEqual (a, b) {

if (a === b) {
return "a und b sind gleich";
}}
sonst {
if (num> 0) {
return "positiv";
} else {
return "negativ";
}}
}}
}}

`` `

@ FelixBoscoJ

Erwartete Lösung (eine von 6, sehr ähnlich zu Ihrer endgültigen Antwort):

function checkSign(num) {
  return (num > 0) ? "positive" 
    : (num < 0) ? "negative"
    : "zero";
}

If-else-Version

function checkSign(num) {
  if (num > 0) {
    return "positive";
 } else if (num < 0) {
    return "negative";
 } else {
    return "zero";
 } 
}

Ein ternäres oder mehrfaches ternäres kann immer mit if-else geschrieben werden. Die Herausforderung und die Beschreibung sind korrekt. Wir möchten nur ein oder zwei klarstellende Kommentare hinzufügen, um die Best-Practice-Formatierung für die Lesbarkeit hervorzuheben.

Keine Ursache.

Für mich ist das Hinzufügen von klarstellenden Kommentaren die beste Lösung. Lassen wir dies also offen, bis eine PR zusammengeführt wird.

Ich würde gerne darauf springen, wenn möglich. Ich bin ein Anfänger, aber sehr aufgeregt zu lernen!

Mach es, @jasnkwcz. Dies sollte ein gutes Problem für einen Anfänger sein.

Ich empfehle, einen Blick in den Beitragsleitfaden zu werfen. Wenn Sie nicht weiterkommen, fragen Sie im Chatroom des

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen