Freecodecamp: 課題のバグ:複数の条件付き(三項)演算子を使用します。

作成日 2020年05月22日  ·  16コメント  ·  ソース: freeCodeCamp/freeCodeCamp


問題とその再現方法を説明してください。
バグ-以下のコードのテストはエラーで失敗します:checkSignは複数の条件演算子を使用する必要があります。

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


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

スクリーンショット-1:
image

スクリーンショット-2:
image

それを再現する方法。
エラーの代わりに:「checkSignは複数の条件演算子を使用する必要があります。」
エラーは次のようになります。三項演算子のstatement-if-true部分で複数の三項演算子を使用することはベストプラクティスではありません。

(エラーメッセージの明確さの向上)

問題のあるページへのリンクを追加します。
チャレンジへのリンク;
フォーラムのバグを報告している私の投稿へのリンク:

first timers only help wanted learn

最も参考になるコメント

「読みやすくするために、例に示すように、各条件が別々の行にあるように、複数の条件演算子をフォーマットすることをお勧めします。」

同様のメモを追加するためのものです。

全てのコメント16件

微調整が理にかなっていることに同意します。 a)複数の三項を使用していない場合、またはb)三項が期待される形式でない場合に、テストが失敗するという事実を把握できれば助かります。

私はこれが挑戦が求めているものではないと思います: https

これはドキュメントからのコードです:

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

あなたが構築したものは次のとおりです。

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

私は同意します、あなたは仕事を_達成_しました。 ただし、予想される実装ロジックは次の形式です。

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";
  }
}

したがって、おそらく、フォーマットに関してより具体的になるようにチャレンジの指示を変更する必要があります...

私はこれが挑戦が求めているものではないと思います: https

これはドキュメントからのコードです:

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

あなたが構築したものは次のとおりです。

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

私は同意します、あなたは仕事を_達成_しました。 ただし、予想される実装ロジックは次の形式です。

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";
  }
}

したがって、おそらく、フォーマットに関してより具体的になるようにチャレンジの指示を変更する必要があります...

サー、注意してください:このリポジトリはFree CodeCampのものです。 お返事ありがとうございます。

@FelixBoscoJ

私の主張はまだ完全に有効です。

@FelixBoscoJ

私の主張はまだ完全に有効です。

`` `js
関数checkSign(num){
return(num!== 0)?(num> 0)? 「ポジティブ」
:「ネガティブ」
: "ゼロ";
}

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

「」
このチャレンジで上記のコードを試してください。 チャレンジに合格するために必要なものを確認してください。

@FelixBoscoJ 、私は持っています、そして私はこの問題が作成された理由を正確に理解しています。 私はあなたのソリューションのフォーマットが期待されたものではないことを指摘しています。それはレッスンで与えられた例ではっきりと見られます:

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

私は同意します、あなたはその仕事を成し遂げました。 ただし、予想される実装ロジックは次の形式です。

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";
  }
}

ソリューションにelse ifロジックが含まれていません。

@FelixBoscoJ 、私は持っています、そして私はこの問題が作成された理由を正確に理解しています。 私はあなたのソリューションのフォーマットが期待されたものではないことを指摘しています。それはレッスンで与えられた例ではっきりと見られます:

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

私は同意します、あなたはその仕事を成し遂げました。 ただし、予想される実装ロジックは次の形式です。

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";
  }
}

ソリューションにelse ifロジックが含まれていません。

チャレンジに勝つための条件は次のとおりです。

checkSign関数で複数の条件演算子を使用して、数値が正、負、またはゼロであるかどうかを確認します。

複数の条件付き(三項)演算子を使用する必要があります。

おそらく、エラーメッセージは「...推奨される形式の複数の条件演算子」である必要があります。

また、「例に示すように、読みやすくするために、各条件が別々の行にあるように、複数の条件演算子をフォーマットするのがベストプラクティスです」という行に沿ってメモを追加することもできます。

「読みやすくするために、例に示すように、各条件が別々の行にあるように、複数の条件演算子をフォーマットすることをお勧めします。」

同様のメモを追加するためのものです。

閉まっている? 説明の更新はマージされましたか?

@ Sky020三項演算子を使用して、if / else if / elseロジックを実装することはできません。 しかし、タスクは達成できます。

私は同意します、あなたはその仕事を成し遂げました。 ただし、予想される実装ロジックは次の形式です。

 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";
   }
 }

いいえ、予想される実装ロジックは次の形式です。
`` `js
関数findGreaterOrEqual(a、b){

if(a === b){
「aとbは等しい」を返します。
}
そうしないと {
if(num> 0){
「ポジティブ」を返します。
} そうしないと {
「負」を返します。
}
}
}

`` `

@FelixBoscoJ

期待される解決策(6つのうちの1つ、最終的な答えと非常によく似ています):

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

If-elseバージョン

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

三項または複数の三項は、常にif-elseで記述できます。 課題と説明は正確です。 読みやすくするためのベストプラクティスのフォーマットを強調するために、明確なコメントを1つか2つ追加したいと思います。

気にしないで。

明確なコメントを追加することが最善の解決策であるように私には思えます。 それで、PRがマージされるまでこれを開いたままにしましょう。

可能であれば、これに飛びつきたいと思います。 私は初めてですが、学ぶことに本当に興奮しています!

@jasnkwcz、頑張ってください。 これは、初めての人にとっては良い問題になるはずです。

寄稿ガイドをご覧になることをお勧めします。行き詰まった場合は、寄稿者のチャットルームで質問してください。

このページは役に立ちましたか?
0 / 5 - 0 評価