728x90
반응형
본래 Javascript에서 Array.forEach()는 break문을 따로 지원하지 않는다. 만약 일반 for문의 break 구문을 forEach에서 구현하고 싶다면 아래의 3가지 방법을 사용할 수 있다.
- try... catch문 안에서 forEach를 실행하고 강제로 예외를 던져 루프를 벗어나는 방법
- Array.some() 함수를 사용하는 방법
- Array.every() 함수를 사용하는 방법
이들을 차례로 소개해 보려 한다.
1. try...catch 사용하기
forEach()에서는 return true를 하든 false를 하든 관계 없이 모두 continue로 작동된다. 따라서 return을 통해 break처리를 할 수는 없어 아예 예외 처리를 통해 강제로 반복문에서 벗어나는 방법을 사용한다.
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
try{
arr.forEach(function(n){
console.log(n);
// 에러를 throw하면 강제로 반복문에서 벗어나 catch로 가게 됨
if(n === 3) throw new Error('stop forEach()');
})
} catch(e){
}
// 결과: 1, 2, 3
2. Array.some()
some()은 forEach()와 같이 반복의 기능을 가진 함수로 return true는 break를, return false는 continue를 의미한다.
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.some(function(n){
console.log(n);
if(n===3) return true;
else return false;
})
// 결과: 1, 2, 3
3. Array.every()
every() 또한 반복의 기능을 가진 함수로 some()과는 반대로 return true는 continue를, return false는 break를 의미한다.
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.every(function(n){
console.log(n);
if(n===3) return false;
else return true;
})
// 결과: 1, 2, 3
여기에 추가로 한 가지 방법이 더 있다. $.each()라는 jQuery의 메서드를 사용하는 것. 아래와 같이 return true는 continue로, return false는 break로 사용할 수 있다.
$('input').each(function(){
if($(this).val() === ''){
alert($(this).attr('name')+'의 값이 입력되지 않았습니다.');
return false; // break
}
})
728x90
반응형
'Javascript > Javascript' 카테고리의 다른 글
[Javascript] Cookie 다루기 (0) | 2024.09.24 |
---|---|
[Javascript] 객체의 value 값으로 key 값 찾기 (0) | 2024.09.23 |
[Javascript] Event 동작 취소하기 (1) | 2024.09.13 |
[Javascript] Attribute와 Property (0) | 2024.09.10 |
[Javascript] URL 객체 (0) | 2024.09.09 |