다음과 같은 코드 블록을 사용하여 동일한 용도로 사용합니다. 어떤 이유로 든 for
루프는 forEach
루프와 다른 결과를 낳습니다. 그 이유는 확실하지 않습니다. 첫 번째 forEach
루프가 실패 할 때마다 또는 null로 갈 것으로 보인다 반면 비슷한 forEach와 for 루프의 다른 동작
for (let index = 0; index < this._domains.length; index++) {
if ((userDomain.name === this._domains[index].domainName) ||
(userDomain.fullyQualifiedDomainName === this._domains[index].netBiosName) ||
(userDomain.name === this._domains[index].netBiosName)) {
return this._domains[index];
}
}
return null;
두 번째 for
루프
this._domains.forEach(domain => {
if ((userDomain.name === domain.domainName) || (userDomain.fullyQualifiedDomainName === domain.netBiosName) ||
(userDomain.name === domain.netBiosName)) { return domain; }
});
}
return null;
나에게 예상되는 결과를 제공합니다.
내가 여기에서 놓치고있는 아이디어 나 것들? 반복에서 새 배열을 만들지는 않겠지 만 map
, filter
또는 reduce
과 같은 다른 고차 기술을 사용할 수있는 좋은 기회일까요?
감사
내부의'return'은'.forEach()가'콜백 영향을주지 않습니다; 그것은 단지 콜백 함수로부터 리턴되며 함수를 포함하는 외부로부터 리턴되지 않습니다. – Pointy
@Pointy 아, 비슷한 것을 얻고 싶다면 해당 일치 항목을 저장하고 루프에서 빠져 나와 외부 함수에서 돌아 오겠습니까? 또는 일치하는 것이 있으면 변수에 저장 한 다음 해당 변수를 반환하고 호출 함수에서 변수가 null인지 확인합니다 (변수가 null이면 그렇지 않습니다)? –
첫 번째 버전을 사용하려면 return this._domains.find (domain'... 등)을 실행하십시오. 내부 'return domain'이 작동하지만'if '조건 자체의'return' 일 수도 있습니다 – trincot