2016-09-27 6 views
1

이것이 사실을 반환하는 이유를 친절하게 말해 줄 수 있습니까? false를 반환해야합니다. 첫 번째 반복 값 [pre] === 0 ... 감사합니다.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

읽기를 고려하십시오. De Morgan의 법에 관한 것. 또한 모든 값이'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

고마워요. 하지만 이유를 설명해 주시겠습니까? 왜냐하면 내가 || 연산자, 이들 중 어떤 것이 평등하지 않은지 묻는다면, 거짓을 반환할까요? –

+0

@theNeighbourhoodGhost'||'를 사용하면 이들 중 하나가 같지 않은지 묻고 나서 true를 반환합니다. – 4castle

+0

값이 [truthy]인지 확인하려고하는 경우 표현식을'!! value [pre]'로 압축 할 수 있습니다 (https://developer.mozilla.org/en-US/docs/Glossary/Truthy). – 4castle

관련 문제