チャレンジ焚き火: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, ""]);
ここで何か誤解してしまった場合は、あらかじめお詫び申し上げます。
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を返すため。
最も参考になるコメント
また、技術的には、
Boolean
関数を使用してこれを行うことができるため、問題を解決できます。return arr.filter(Boolean)
、ブール値は真偽の値を取り、trueまたはfalseを返すため。