2016-09-27 8 views
1

これが本当に返されている理由を親切に教えてもらえますか?それは最初の反復値[pre] === 0 ...ありがとうので、falseを返す必要があります。every()メソッドが正しい値を返さない

function truthCheck(collection, pre) { 
    function check(value){ 
     if(value.hasOwnProperty(pre)){ 
     return value[pre] !== null || value[pre] !== undefined || value[pre] !== ""|| value[pre] !== 0; 
     } 
    } 
    return collection.every(check); 
}  
truthCheck([{"user": "Tinky-Winky", "sex": "male", "age": 0}, {"user": "Dipsy", "sex": "male", "age": 3}, {"user": "Laa-Laa", "sex": "female", "age": 5}, {"user": "Po", "sex": "female", "age": 4}], "age"); 
+0

。すなわち、 'return!(value [pre] === 0); – meganaut

+0

読み込みを検討するデ・モルガンの法律についてまた、すべての値が 'null' **または** undefinedではないと考えてください。 – zzzzBov

+0

あなたは理由を説明できますか?私は配列にプロパティpreが含まれていて、preの値がnull、undefined、 ""、または0でなければtrueを返すと言っています(テストに合格したので)? &&演算子を使用するのはなぜですか?または論理を逆転させるか? –

答えて

1

使用&&オペレータあなたのロジックを反転する必要が

return (value[pre] !== null 
     && value[pre] !== undefined 
     && value[pre] !== "" 
     && value[pre] !== 0); 

jsfiddle https://jsfiddle.net/4wcovask/

+0

ありがとうございました。しかし、なぜ説明してくださいできますか?もし私が||これらのANYが等しくないかどうかを尋ねるのではなく、偽を返しますか? –

+0

@theNeighbourhoodGhost '||'を使用すると、これらのいずれかが等しくないかどうかを確認してからtrueを返します。 – 4castle

+0

値が[truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy)であるかどうかを確認しようとしている場合は、式を '!! value [pre]'に集約できます)。 – 4castle

関連する問題