2017-01-10 5 views
0
function boo(arr) 
{ 
for(var i=0;i<arr.length;i++) 
{ 
    var bob = new Boolean(arr[i]); 
    if(bob === false) 
    { 

    console.log(arr[i]); 

    } 

} 
} 
console.log(boo([0,"how",89,false])); 

Booleanオブジェクトを使用して配列からfalse、null、undefinedなどのすべてのfalse値をチェックして印刷したいとします。どのように私はブールオブジェクトを使用してそれを行うことができますか? Booleanオブジェクトにtrueまたはfalseのいずれかをチェックするために複数の値を追加するにはどうすればよいですか?なぜ私はブールオブジェクトを使用して未定義になっていますか?

+0

あなたは '!!'演算子を使う必要があります – Legends

+0

@Legends:そのようなものはありません。これが2回適用された '!'演算子です。 –

+0

もちろん........ – Legends

答えて

2

Booleanオブジェクトをjavascriptで比較することはできません。 new Boolean(...) === falseは常にfalseと評価されます。問題の

MDN has a good warning

は、Booleanオブジェクトのtrueとfalseの値をtrueとfalseプリミティブブール値を混同しないでください。

例えば(value = arr[i])、真実があるかどうかを確認する必要がある場合は、!!valueを使用してください。偽の場合は!valueを使用してください。何かが実際にtrueであるかどうかを確認する必要がある場合は、value === trueを使用してください。falseについても同様ですが、Booleanインスタンスではありません。

+0

ここで 'value'は' bob'ではなく 'arr [i]'です。 –

+0

ありがとうございました:)いつ私に教えてくれますか?そして!!私は以前にそれを使用したことはありませんし、それについて多くを知らない。 –

+0

@caycospete '!'は、偽の値をとり、それを 'true'(真理値なら' false')にするNOT演算子です。 '!!'はちょうど2の '!'であり、値を反転させ、効果的に値をブール値にキャストします。 –

関連する問題