약간 혼란스러워서 freeCodeCamp에 도전하고 있습니다. 술어 (초 인수가) 모음 (첫 번째 인수)의 모든 요소에 truthy 경우forEach/for ... 값을 반환하지 않습니까?
모든 것이
확인 사실 다음과 같이
challenge는 읽습니다.
해결되었지만 추가 조치를 취해야하는 이유가 무엇인지 이해할 수 없습니다. 내 코드는 다음과 같은 수 있습니다 : collection
내에서 두번째 요소는 sex
속성을 갖고 있지 않기 때문에
function truthCheck(collection, pre) {
collection.forEach(function(element) {
for (key in element) {
if (!element.hasOwnProperty(pre)) {
return false;
} else if (key === pre) {
if (!Boolean(element[key])) {
return false;
}
}
}
});
return true;
}
truthCheck([
{"user": "Tinky-Winky", "sex": "male"},
{"user": "Dipsy"},
{"user": "Laa-Laa", "sex": "female"},
{"user": "Po", "sex": "female"}
], "sex");
그래서이 경우에 실패합니다. 또한
pre
인수 또는이 경우
sex
이 true 값이 아닌 경우 실패합니다.
이들이 히트를 치면 (콘솔 로그를 통해 알 수 있습니다) 루프에서 빠져 나와 truthCheck
함수에서 돌아 오는 것으로 나타났습니다 .....하지만 그렇지 않습니다. 결국 사실로 돌아올 것입니다.
변수를 정의한 다음 그 값을 false로 설정하고 끝에서 변수를 반환함으로써이를 회피 할 수있었습니다. 더 좋은 방법이 있습니까? 이러한 반품이 truthCheck
함수에서 벗어나는 것 같습니다. 내가 놓친 게 있니?
Foreach는 반환 값을 사용하여 아무 작업도 수행하지 않습니다. 대신에 for 회 돌이를 사용하고 싶을 것이다. – Christopher
FYI :'if (Boolean (element [key]))'는'if (element [key])'로 작성하기 쉽습니다. 특정 값이 true로 평가되는 값으로 설정되어 있는지 확인합니다. 객체가 특정 * key * (특정 * value *를 가지는 것과 반대)를 가지고 있는지 알고 싶다면'if (element.hasOwnProperty (key)) '를 사용하십시오. – Tomalak