스택큐힙리스트

짧은 서킷 Array.forEach는 break를 호출하는 것과 같습니다. 본문

카테고리 없음

짧은 서킷 Array.forEach는 break를 호출하는 것과 같습니다.

스택큐힙리스트 2024. 1. 31. 02:03
반응형

[1,2,3].forEach(function(el) {
if(el === 1) break;
});

어떻게 JavaScript의 새로운 forEach 메서드를 사용하여 이 작업을 수행할 수 있을까요? return;, return false;break을 시도해보았지만, break은 동작하지 않고 return은 반복을 계속 진행하는 것 이외에는 아무런 동작을 하지 않습니다.

답변 1

대신에 Array#some을 사용하십시오:




[1, 2, 3].some(function(el) {
console.log(el);
return el === 2;
});



이 작업은 some이 콜백 중 하나가 true를 반환하는 즉시, 나머지 실행을 바로 중단하여 true를 반환합니다.

some, 그것의 역은 every (false를 반환하면 중단되는) 및 forEach는 모두 ECMAScript 5번째 판에서 추가해야 할 메소드입니다. 브라우저에서 누락된 경우 Array.prototype에 추가해야 합니다.


Array#every 사용하기




[1, 2, 3].every(v => {
if (v > 2) {
return false // break
}
console.log(v);
return true // break하지 않으면 true를 반환해야 함
});


답변 2

Array.forEach 메소드의 생략처리 기능과 유사한 기능을 갖는 Short circuit에 대해 알아보겠습니다.
우선, JavaScript 프로그래밍에서 Array에 forEach 메소드를 사용하면 배열의 각 요소에 대해 반복문을 실행할 수 있습니다. 이는 매우 유용한 기능이지만, 때로는 특정 조건이 충족되었을 때 반복을 중지하고 싶을 수도 있습니다. 이때, Short circuit은 우리에게 해결책을 제공합니다.
Short circuit는 JavaScript의 논리 연산자인 '&&'와 '||'을 이용하여 구현할 수 있습니다. '&&' 연산자를 사용하면 조건이 거짓인 경우 반복을 중단할 수 있습니다. '||' 연산자를 사용하면 반대로 조건이 참인 경우 반복을 중단할 수 있습니다. 이렇게 함으로써, forEach 메소드를 사용하면서도 원하는 조건에 따라 반복문을 중지할 수 있습니다.
예를 들어, Array.forEach를 사용하여 배열의 모든 요소에 대해 반복하되, 특정 조건을 만족하는 요소를 찾는 경우를 생각해보겠습니다. forEach 메소드는 반복문을 중단할 수 있는 기능을 제공하지 않기 때문에, 일반적인 for 루프와 같은 방법으로 중지시키는 것은 번거로울 수 있습니다. 하지만 Short circuit를 사용하면 간단하게 반복을 중단할 수 있습니다.
예를 들어, 다음과 같은 배열이 있다고 가정해보겠습니다.
```javascript
const array = [1, 2, 3, 4, 5];
```
이 배열에서 3보다 큰 첫 번째 요소를 찾고자 한다면, 다음과 같이 Short circuit를 사용할 수 있습니다.
```javascript
let result;
array.forEach((num) => {
if (num > 3) {
result = num;
}
});
```
위의 예시에서는 배열의 요소를 반복하면서 3보다 큰 첫 번째 요소를 찾으면 반복을 중지하고, 해당 요소를 'result' 변수에 저장합니다. 이후에는 더 이상 반복하지 않기 때문에 성능 향상에도 도움이 됩니다.
이처럼 Short circuit는 Array.forEach 메소드와 유사한 기능을 제공하면서도, 반복문을 효율적으로 중지하는 기능을 제공합니다. 따라서 개발자들에게 매우 유용한 기술입니다.
이상으로 JavaScript의 Short circuit를 이용한 Array.forEach 메소드의 생략처리 기능에 대해 알아보았습니다. 프로그래밍에서 유용하게 사용할 수 있으며, 개발자들 사이에서 널리 알려져 있습니다. 적절히 활용한다면 코드의 가독성과 효율성을 향상시킬 수 있습니다.

반응형
Comments