Freecodecamp: 焚き火:偽の用心棒-矛盾した指示

作成日 2015年12月15日  ·  3コメント  ·  ソース: freeCodeCamp/freeCodeCamp

チャレンジ焚き火:FalsyBouncerに問題があります。
ユーザーエージェントは次のとおりです: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36

Falsy Bouncerへの指示は、Falsy値がNaNを含むさまざまなタイプであることを示しています。
最初のテストでは、関数呼び出しbouncer([7、 "ate"、 ""、false、9])[7、 "ate"、9]を返す必要があり
ただし、文字列「ate」NaNであるため、結果の配列に含めるべきではないことに注意してください。

そのため、同じコードブロックでテスト1とテスト3に合格する方法はないようです。これらは、相互に排他的な答えです。

私のコード:

function bouncer(arr) {

  arr = arr.filter(function(val){
    if (val === false || val === null || val === undefined || val === "" || val === 0 || isNaN(val)) return false;
    return true;
  });

  return arr;
}

bouncer([false, null, 0, NaN, undefined, ""]);

最も参考になるコメント

また、技術的には、 Boolean関数を使用してこれを行うことができるため、問題を解決できます。
return arr.filter(Boolean) 、ブール値は真偽の値を取り、trueまたはfalseを返すため。

全てのコメント3件

ここで何か誤解してしまった場合は、あらかじめお詫び申し上げます。

NaNは変数が持つことができる実際の値であり、falseです。 "ate"は数値ではなく、 isNan("ate")はtrueを返しますが、値"ate"はfalseではなく、 NaNの特定の値のみがfalseです。 false値の利点(および場合によってはバグの原因)は、コードのように明示的に検索する必要がないことです。ブール値が必要な場合は常に、Javascriptがブール値falseに強制変換するためです。 これが意味するのは、フィルター関数のコードは単純に次のようになる可能性があるということです。

arr = arr.filter(function(val){
  return val;
});

おかげで、幸せなコーディング!

また、技術的には、 Boolean関数を使用してこれを行うことができるため、問題を解決できます。
return arr.filter(Boolean) 、ブール値は真偽の値を取り、trueまたはfalseを返すため。

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