일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 컴퓨터비전
- 보안
- 프로그래밍언어
- 데이터과학
- 컴퓨터공학
- 소프트웨어
- 네트워크보안
- 자료구조
- 인공지능
- 소프트웨어공학
- I'm Sorry
- 사이버보안
- 웹개발
- 데이터베이스
- 프로그래밍
- 버전관리
- 코딩
- 머신러닝
- 자바스크립트
- 클라우드컴퓨팅
- 딥러닝
- 네트워크
- 빅데이터
- 알고리즘
- 데이터분석
- Yes
- 데이터구조
- 파이썬
- 컴퓨터과학
- 2
- Today
- Total
스택큐힙리스트
Array.forEach를 호출하는 것처럼 단락 회로가 발생합니다. 본문
[1,2,3].forEach(function(el) {
if(el === 1) break;
});
자바스크립트의 새로운 forEach 방법을 사용하여 이것을 어떻게 할 수 있나요? return; , return false; 및 break 을 시도해 보았지만 break 는 충돌하고 return 는 반복을 계속하는 것 외에는 아무것도 하지 않습니다.
답변 1
break을(를) forEach에서 내장된 능력으로 실행할 수는 없습니다. 실행을 중단하려면 어떤 종류의 예외를 던져야 합니다. 예를 들어,
var BreakException = {};
try {
[1, 2, 3].forEach(function(el) {
console.log(el);
if (el === 2) throw BreakException;
});
} catch (e) {
if (e !== BreakException) throw e;
}
자바스크립트 예외는 매우 예쁘지 않습니다. 진짜로 내부에서 하는 경우에는 전통적인 for 루프가 더 적합할 수 있습니다.
Array#some을 사용하세요.
대신에 Array#some를 사용하십시오.
[1, 2, 3].some(function(el) {
console.log(el);
return el === 2;
});
이것은 콜백이 배열 순서대로 실행되면서 어떤 콜백이 true 를 반환하면 다른 콜백의 실행을 중지하고 바로 true 를 반환하기 때문에 작동합니다.
some , 그것의 역수는 every (이것은 return false 에서 멈출 것입니다), 그리고 forEach 모두 ECMAScript 5판 메서드입니다. 이들은 브라우저에서 누락되어 있는 경우에 Array.prototype 에 추가되어야합니다.
Array#every을 사용하세요.
[1, 2, 3].every(v => {
if (v > 2) {
return false // break
}
console.log(v);
return true // must return true if doesn't break
});
답변 2
제목: Array.forEach의 단축 회로: break를 호출하는 것과 같은 효과Array.forEach는 자바스크립트에서 배열을 반복할 때 일반적으로 사용되는 메서드 중 하나입니다. 그러나 종종 개발자들은 break와 같은 효과를 내기 위해 이를 단축 회로로 사용하고 싶어합니다. 이 기능에 대해 자세히 살펴보겠습니다.
Array.forEach는 콜백 함수를 사용하여 배열의 각 요소를 처리합니다. 배열의 모든 요소를 처리하면서 중간에 반복문을 중지하거나 빠져나오는 것은 불가능합니다. 따라서 종종 반복을 조기 종료해야 하는 경우가 있습니다. 예를 들어 특정 요소를 찾았는데 그 이후의 요소들은 더 이상 처리할 필요가 없는 경우 등이 그것입니다.
이러한 경우에는 다른 메서드를 사용해야 합니다. 일반적으로 for 루프를 사용하여 반복문을 수동으로 생성하고 조기에 중지합니다. 다음은 예시 코드입니다.
```
var arr = [1, 2, 3, 4, 5];
for (var i = 0; i < arr.length; i++) {
if (arr[i] === 3) {
break;
}
console.log(arr[i]);
}
```
그러나 이를 단축 회로로 작성할 수 있습니다. Array.some 메서드는 배열의 각 요소를 처리하면서 조건이 충족되면 반복을 중지합니다. 이를 활용하여 단축 회로를 작성할 수 있습니다.
```
var arr = [1, 2, 3, 4, 5];
arr.some(function(elem) {
if (elem === 3) {
return true;
}
console.log(elem);
});
```
Array.some의 콜백 함수는 참을 반환하는 경우 반복을 중지합니다. 따라서 위의 코드에서는 일치하는 요소를 찾으면 true를 반환하여 반복을 중지하고 나머지 요소들은 처리합니다.
Array.forEach 단축 회로를 사용하면 코드를 더 간결하고 가독성이 좋게 작성할 수 있습니다. 또한 성능 면에서도 Array.some이 일반적으로 for 루프보다 빠르기 때문에 이점이 있습니다.
그러나 단점도 있습니다. Array.forEach 단축 회로를 사용하면 일부 개발자들이 코드의 의도를 이해하는 것이 어려울 수 있습니다. 또한 단축 회로를 계속해서 사용하면 오히려 코드의 복잡성이 증가할 수 있습니다.
결론적으로, Array.forEach의 단축 회로를 사용하여 break와 같은 효과를 내는 것이 가능합니다. 그러나 이를 과도하게 사용하면 코드의 복잡성이 증가할 수 있으므로 적절히 활용하는 것이 중요합니다.